From 8f0d347c38b5f7cddd9fb5cabfc5fbd2e8e26a61 Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 6 Mar 2023 04:27:34 -0500 Subject: [PATCH] move storyteller-web query: set user role --- .../src/queries/users/user_roles/mod.rs | 3 +- .../queries/users/user_roles/set_user_role.rs | 31 +++++++++++++++++++ .../moderation/user_roles/set_user_role.rs | 20 ++++-------- 3 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 crates/lib/database_queries/src/queries/users/user_roles/set_user_role.rs diff --git a/crates/lib/database_queries/src/queries/users/user_roles/mod.rs b/crates/lib/database_queries/src/queries/users/user_roles/mod.rs index 9044f29c44..6dcd958fde 100644 --- a/crates/lib/database_queries/src/queries/users/user_roles/mod.rs +++ b/crates/lib/database_queries/src/queries/users/user_roles/mod.rs @@ -1,2 +1,3 @@ pub mod list_staff; -pub mod list_user_roles; \ No newline at end of file +pub mod list_user_roles; +pub mod set_user_role; \ No newline at end of file diff --git a/crates/lib/database_queries/src/queries/users/user_roles/set_user_role.rs b/crates/lib/database_queries/src/queries/users/user_roles/set_user_role.rs new file mode 100644 index 0000000000..ab09ff9d77 --- /dev/null +++ b/crates/lib/database_queries/src/queries/users/user_roles/set_user_role.rs @@ -0,0 +1,31 @@ +use anyhow::anyhow; +use errors::AnyhowResult; +use sqlx::MySqlPool; +use tokens::users::user::UserToken; + +pub async fn set_user_role( + user_token: &UserToken, + user_role_slug: &str, + mysql_pool: &MySqlPool +) -> AnyhowResult<()> { + + let query_result = sqlx::query!( + r#" +UPDATE users +SET + user_role_slug = ? +WHERE + token = ? +LIMIT 1 + "#, + user_role_slug, + user_token, + ) + .execute(mysql_pool) + .await; + + match query_result { + Ok(_) => Ok(()), + Err(err) => Err(anyhow!("couldn't update user role: {:?}", err)) + } +} diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_roles/set_user_role.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_roles/set_user_role.rs index d7f22724d0..fff718da6a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_roles/set_user_role.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_roles/set_user_role.rs @@ -19,6 +19,7 @@ use sqlx::error::Error::Database; use sqlx::mysql::MySqlDatabaseError; use std::fmt; use std::sync::Arc; +use database_queries::queries::users::user_roles::set_user_role::set_user_role; /// For the URL PathInfo #[derive(Deserialize)] @@ -125,20 +126,11 @@ pub async fn set_user_role_handler( } }; - let query_result = sqlx::query!( - r#" -UPDATE users -SET - user_role_slug = ? -WHERE - token = ? -LIMIT 1 - "#, - &request.user_role_slug, - &target_user.user_token, - ) - .execute(&server_state.mysql_pool) - .await; + let query_result = set_user_role( + &target_user.user_token, + &request.user_role_slug, + &server_state.mysql_pool, + ).await; match query_result { Ok(_) => {},