summaryrefslogtreecommitdiff
path: root/src/services/db.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/db.rs')
-rw-r--r--src/services/db.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/services/db.rs b/src/services/db.rs
index 3eee9ba..80335c4 100644
--- a/src/services/db.rs
+++ b/src/services/db.rs
@@ -84,6 +84,24 @@ pub async fn get_user<'c>(
Ok(Some(record.try_into()?))
}
+pub async fn get_user_by_username<'c>(
+ conn: impl Executor<'c, Database = MySql>,
+ username: &str,
+) -> Result<Option<User>, RawUnexpected> {
+ let record = query_as!(
+ UserRow,
+ r"SELECT user_id, username, password_hash, password_salt, password_version
+ FROM users WHERE username = ?",
+ username
+ )
+ .fetch_optional(conn)
+ .await?;
+
+ let Some(record) = record else { return Ok(None) };
+
+ Ok(Some(record.try_into()?))
+}
+
pub async fn get_username<'c>(
conn: impl Executor<'c, Database = MySql>,
user_id: Uuid,