diff --git a/src/api.rs b/src/api.rs index e3fc9f6..38d98d5 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1,7 +1,7 @@ use lootalot_db::{self as db, DbConnection, QueryResult}; /// Every possible update which can happen during a query -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Debug)] pub enum Update { Wealth(db::Wealth), ItemAdded(db::Item), @@ -11,7 +11,7 @@ pub enum Update { } /// Every value which can be queried -#[derive(Serialize, Deserialize, Debug)] +#[derive(Debug)] pub enum Value { Item(db::Item), Claim(db::Claim), @@ -20,8 +20,20 @@ pub enum Value { PlayerList(Vec), } +impl serde::Serialize for Value { + fn serialize(&self, serializer: S) -> Result { + match self { + Self::Item(v) => v.serialize(serializer), + Self::Claim(v) => v.serialize(serializer), + Self::ItemList(v) => v.serialize(serializer), + Self::ClaimList(v) => v.serialize(serializer), + Self::PlayerList(v) => v.serialize(serializer), + } + } +} + /// A generic response for all queries -#[derive(Serialize, Deserialize, Debug, Default)] +#[derive(Serialize, Debug, Default)] pub struct ApiResponse { /// The value requested, if any pub value: Option,