Geoffrey-rs/geoffrey_models/src/models/parameters/mod.rs

63 lines
1.3 KiB
Rust

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<T> {
fn get_token(&self) -> String;
fn get_params(&self) -> &T;
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct CommandRequest<T> {
pub token: String,
pub user_id: Option<UserID>,
pub params: T,
}
impl<T> GeoffreyRequest<T> for CommandRequest<T> {
fn get_token(&self) -> String {
self.token.clone()
}
fn get_params(&self) -> &T {
&self.params
}
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct ModelRequest<T> {
pub token: String,
pub params: T,
}
impl<T> GeoffreyRequest<T> for ModelRequest<T> {
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 {}