From 3aff5f0123778aa453ab5396cb880a83267ae4ee Mon Sep 17 00:00:00 2001 From: mrw1593 Date: Fri, 12 May 2023 22:54:38 -0400 Subject: Add an update_user endpoint --- src/services/db.rs | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'src/services') diff --git a/src/services/db.rs b/src/services/db.rs index efa9584..b508e1b 100644 --- a/src/services/db.rs +++ b/src/services/db.rs @@ -1,5 +1,5 @@ use exun::*; -use sqlx::{query, query_scalar, Executor, MySql, MySqlPool}; +use sqlx::{mysql::MySqlQueryResult, query, query_scalar, Executor, MySql, MySqlPool}; use uuid::Uuid; use crate::models::User; @@ -38,10 +38,21 @@ pub async fn username_is_used<'c>( Ok(exists) } +pub async fn get_username<'c>( + conn: impl Executor<'c, Database = MySql>, + user_id: Uuid, +) -> Result, RawUnexpected> { + let username = query_scalar!(r"SELECT username FROM users where user_id = ?", user_id) + .fetch_optional(conn) + .await?; + + Ok(username) +} + pub async fn new_user<'c>( conn: impl Executor<'c, Database = MySql>, - user: User, -) -> Result { + user: &User, +) -> Result { query!( r"INSERT INTO users (user_id, username, password_hash, password_salt, password_version) VALUES (?, ?, ?, ?, ?)", @@ -54,3 +65,24 @@ pub async fn new_user<'c>( .execute(conn) .await } + +pub async fn update_username<'c>( + conn: impl Executor<'c, Database = MySql>, + user: &User, +) -> Result { + query!( + r"UPDATE users SET + username = ?, + password_hash = ?, + password_salt = ?, + password_version = ? + WHERE user_id = ?", + user.username(), + user.password_hash(), + user.password_salt(), + user.password_version(), + user.user_id + ) + .execute(conn) + .await +} -- cgit v1.2.3