Geoffrey-rs/geoffrey_api/src/commands/register.rs

37 lines
939 B
Rust

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<Context>,
req: Self::Req,
_: Option<Player>,
) -> crate::Result<Self::Resp> {
let player = Player::new(req.username.as_str(), req.new_user_id);
ctx.db.insert(player).map_err(GeoffreyAPIError::from)
}
}