use crate::commands::{Command, RequestType}; use crate::context::Context; use geoffrey_models::models::parameters::register_params::RegisterParameters; use geoffrey_models::models::player::Player; use geoffrey_models::models::response::api_error::GeoffreyAPIError; use geoffrey_models::models::CommandLevel; use std::sync::Arc; pub struct Register {} impl Command for Register { type Req = RegisterParameters; type Resp = Player; fn command_name() -> String { "register".to_string() } fn request_type() -> RequestType { RequestType::POST } fn command_level() -> CommandLevel { CommandLevel::ALL } fn run_command( ctx: Arc, req: &Self::Req, _: Option, ) -> crate::Result { let player = Player::new(req.username.as_str(), req.user_id.clone()); ctx.db.insert(player).map_err(GeoffreyAPIError::from) } }