summaryrefslogtreecommitdiff
path: root/src/users.rs
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-07-14 21:27:03 +0300
committerDawid Rycerz <dawid@rycerz.xyz>2025-07-14 21:27:03 +0300
commitdbb25297da61fe393ca1e8a6b6c6beace2513e0a (patch)
treed659a4a3465d519cc45b4501f0ac98060d227061 /src/users.rs
parenteb0c5d947a2e2755fac4a9b34d9dee6c2987afbb (diff)
feat: fix user_id in requests missing
Diffstat (limited to 'src/users.rs')
-rw-r--r--src/users.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/users.rs b/src/users.rs
index 0cfa440..129bf15 100644
--- a/src/users.rs
+++ b/src/users.rs
@@ -77,6 +77,14 @@ impl<'a> UserRepository<'a> {
.await?;
Ok(())
}
+
+ pub async fn any_admin_exists(&self) -> Result<bool, sqlx::Error> {
+ let count: (i64,) = sqlx::query_as("SELECT COUNT(*) FROM users WHERE role = ?")
+ .bind(UserRole::Admin)
+ .fetch_one(self.db)
+ .await?;
+ Ok(count.0 > 0)
+ }
}
#[cfg(test)]
@@ -141,4 +149,18 @@ mod tests {
let users = repo.list_users().await.unwrap();
assert_eq!(users.len(), 2);
}
+
+ #[tokio::test]
+ async fn test_any_admin_exists() {
+ let db = setup_db().await;
+ let repo = UserRepository { db: &db };
+ // No admin yet
+ assert!(!repo.any_admin_exists().await.unwrap());
+ // Add a user (not admin)
+ repo.create_user(None, Some(UserRole::User)).await.unwrap();
+ assert!(!repo.any_admin_exists().await.unwrap());
+ // Add an admin
+ repo.create_user(None, Some(UserRole::Admin)).await.unwrap();
+ assert!(repo.any_admin_exists().await.unwrap());
+ }
}