adds custom serializer for api::Value

This commit is contained in:
2019-10-17 13:25:07 +02:00
parent 80585eb1cd
commit ec36403dc3

View File

@@ -1,7 +1,7 @@
use lootalot_db::{self as db, DbConnection, QueryResult}; use lootalot_db::{self as db, DbConnection, QueryResult};
/// Every possible update which can happen during a query /// Every possible update which can happen during a query
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Debug)]
pub enum Update { pub enum Update {
Wealth(db::Wealth), Wealth(db::Wealth),
ItemAdded(db::Item), ItemAdded(db::Item),
@@ -11,7 +11,7 @@ pub enum Update {
} }
/// Every value which can be queried /// Every value which can be queried
#[derive(Serialize, Deserialize, Debug)] #[derive(Debug)]
pub enum Value { pub enum Value {
Item(db::Item), Item(db::Item),
Claim(db::Claim), Claim(db::Claim),
@@ -20,8 +20,20 @@ pub enum Value {
PlayerList(Vec<db::Player>), PlayerList(Vec<db::Player>),
} }
impl serde::Serialize for Value {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
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 /// A generic response for all queries
#[derive(Serialize, Deserialize, Debug, Default)] #[derive(Serialize, Debug, Default)]
pub struct ApiResponse { pub struct ApiResponse {
/// The value requested, if any /// The value requested, if any
pub value: Option<Value>, pub value: Option<Value>,