37 lines
944 B
Rust
37 lines
944 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.user_id.clone());
|
|
|
|
ctx.db.insert(player).map_err(GeoffreyAPIError::from)
|
|
}
|
|
}
|