use crate::Result; use geoffrey_db::database::Database; use geoffrey_models::models::parameters::{CommandRequest, GeoffreyParam, GeoffreyRequest}; use geoffrey_models::models::player::Player; use geoffrey_models::models::response::api_error::GeoffreyAPIError; use geoffrey_models::models::token::Token; pub fn get_player_from_req( db: &Database, req: &CommandRequest, ) -> Result> { if let Some(user_id) = &req.user_id { Ok(db .filter(|_, player: &Player| player.has_user_id(user_id))? .next()) } else { Ok(None) } } pub fn get_token_from_req>( db: &Database, req: &U, ) -> Result> { Ok(db .filter(|_, token: &Token| token.secret == req.get_token())? .next()) } pub fn validate_string_parameter(param_name: &str, s: &str, max_len: usize) -> Result<()> { if s.len() < max_len { Ok(()) } else { Err(GeoffreyAPIError::ParameterInvalid(param_name.to_string())) } }