use crate::models::locations::LocationType; use crate::models::parameters::CommandRequest; use crate::models::player::UserID; use crate::models::{Portal, Position}; use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize, Clone)] pub struct AddLocationParams { pub token: String, pub user_id: UserID, pub name: String, pub position: Position, pub loc_type: LocationType, pub portal: Option, } impl AddLocationParams { pub fn new( name: String, position: Position, loc_type: LocationType, portal: Option, ) -> Self { Self { token: Default::default(), user_id: Default::default(), name, position, loc_type, portal, } } } impl CommandRequest for AddLocationParams { fn token(&self) -> String { self.token.clone() } fn user_id(&self) -> Option { Some(self.user_id.clone()) } fn set_user_id(&mut self, user_id: UserID) { self.user_id = user_id; } fn set_token(&mut self, token: String) { self.token = token; } }