summaryrefslogtreecommitdiff
path: root/src/services
diff options
context:
space:
mode:
Diffstat (limited to 'src/services')
-rw-r--r--src/services/db.rs38
1 files changed, 35 insertions, 3 deletions
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<Option<String>, 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<sqlx::mysql::MySqlQueryResult, sqlx::Error> {
+ user: &User,
+) -> Result<MySqlQueryResult, sqlx::Error> {
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<MySqlQueryResult, sqlx::Error> {
+ 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
+}