diff options
Diffstat (limited to 'src/util.rs')
| -rw-r--r-- | src/util.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/util.rs b/src/util.rs new file mode 100644 index 0000000..944feb6 --- /dev/null +++ b/src/util.rs @@ -0,0 +1,37 @@ +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<User, ServiceError>; +} + +impl Handler<UserRequest> for DbExecutor { + type Result = Result<User, ServiceError>; + + 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::<User>(conn) + .map_err(|_| ServiceError::NotFound) + } +} + +pub mod filters { + use num_format::{CustomFormat, ToFormattedString}; + + pub fn fmt_points(amount: &u64) -> Result<String, askama::Error> { + let format = CustomFormat::builder() + .separator(" ") + .build() + .expect("Format is fine"); + Ok(format!("{} JKP", (*amount).to_formatted_string(&format))) + } +} |
