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};
|
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>,
|
||||||
|
|||||||
Reference in New Issue
Block a user