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};
/// 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<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
#[derive(Serialize, Deserialize, Debug, Default)]
#[derive(Serialize, Debug, Default)]
pub struct ApiResponse {
/// The value requested, if any
pub value: Option<Value>,