adds custom serializer for api::Value
This commit is contained in:
18
src/api.rs
18
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<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>,
|
||||
|
||||
Reference in New Issue
Block a user