use actix::{Handler, Message}; use diesel::{ExpressionMethods, MysqlConnection, QueryDsl, RunQueryDsl}; use crate::error::ServiceError; use crate::model::{DbExecutor, User}; use crate::schema::users::{columns as user_columns, dsl::users}; pub struct UserRequest(pub String); impl Message for UserRequest { type Result = Result; } impl Handler for DbExecutor { type Result = Result; fn handle(&mut self, req: UserRequest, _: &mut Self::Context) -> Self::Result { let conn: &MysqlConnection = &self.0.get().unwrap(); users .filter(user_columns::name.eq(req.0)) .first::(conn) .map_err(|_| ServiceError::NotFound) } } pub mod filters { use num_format::{CustomFormat, ToFormattedString}; pub fn fmt_points(amount: &u64) -> Result { let format = CustomFormat::builder() .separator(" ") .build() .expect("Format is fine"); Ok(format!("{} JKP", (*amount).to_formatted_string(&format))) } }