pub mod add_item_params; pub mod add_location_params; pub mod add_token_params; pub mod delete_params; pub mod edit_params; pub mod find_params; pub mod info_params; pub mod item_command_params; pub mod link_params; pub mod register_params; pub mod selling_params; pub mod set_portal_params; use crate::models::player::UserID; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; use std::fmt::Debug; pub trait GeoffreyParam: Serialize + DeserializeOwned + Debug + Clone + Send + Sync {} pub trait GeoffreyRequest { fn get_token(&self) -> String; fn get_params(&self) -> &T; } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct CommandRequest { pub token: String, pub user_id: Option, pub params: T, } impl GeoffreyRequest for CommandRequest { fn get_token(&self) -> String { self.token.clone() } fn get_params(&self) -> &T { &self.params } } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ModelRequest { pub token: String, pub params: T, } impl GeoffreyRequest for ModelRequest { fn get_token(&self) -> String { self.token.clone() } fn get_params(&self) -> &T { &self.params } } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct EmptyRequest {} impl GeoffreyParam for EmptyRequest {}