From e6468b012d5b33dd16992652da57f11dd5a6e82f Mon Sep 17 00:00:00 2001 From: Jokler Date: Sun, 21 Jun 2020 06:37:46 +0200 Subject: Initial commit --- src/user/settings.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/user/settings.rs (limited to 'src/user/settings.rs') diff --git a/src/user/settings.rs b/src/user/settings.rs new file mode 100644 index 0000000..55e658c --- /dev/null +++ b/src/user/settings.rs @@ -0,0 +1,36 @@ +use actix::{Handler, Message}; +use diesel::MysqlConnection; +use diesel::{ExpressionMethods, QueryDsl, RunQueryDsl}; + +use crate::error::ServiceError; +use crate::model::DbExecutor; +use crate::schema::passwords::{columns as password_columns, dsl::passwords}; + +pub struct UpdatePasswordRequest { + pub user: u64, + pub hash: String, +} + +impl UpdatePasswordRequest { + pub fn new(user: u64, hash: String) -> Self { + Self { user, hash } + } +} + +impl Message for UpdatePasswordRequest { + type Result = Result<(), ServiceError>; +} + +impl Handler for DbExecutor { + type Result = Result<(), ServiceError>; + + fn handle(&mut self, req: UpdatePasswordRequest, _: &mut Self::Context) -> Self::Result { + let conn: &MysqlConnection = &self.0.get().unwrap(); + + diesel::update(passwords.filter(password_columns::id.eq(req.user))) + .set(password_columns::hash.eq(req.hash)) + .execute(conn)?; + + Ok(()) + } +} -- cgit v1.2.3-70-g09d2