summaryrefslogtreecommitdiff
path: root/src/users.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/users.rs')
-rw-r--r--src/users.rs35
1 files changed, 20 insertions, 15 deletions
diff --git a/src/users.rs b/src/users.rs
index baca6dd..0cfa440 100644
--- a/src/users.rs
+++ b/src/users.rs
@@ -9,21 +9,16 @@ pub struct User {
pub role: UserRole,
}
-#[derive(Debug, Serialize, Deserialize, sqlx::Type, Clone, PartialEq, Eq)]
+#[derive(Debug, Serialize, Deserialize, sqlx::Type, Clone, PartialEq, Eq, Default)]
#[sqlx(type_name = "TEXT")]
pub enum UserRole {
#[serde(rename = "user")]
+ #[default]
User,
#[serde(rename = "admin")]
Admin,
}
-impl Default for UserRole {
- fn default() -> Self {
- UserRole::User
- }
-}
-
pub struct UserRepository<'a> {
pub db: &'a sqlx::SqlitePool,
}
@@ -49,11 +44,15 @@ impl<'a> UserRepository<'a> {
.await
}
- pub async fn create_user(&self, user_id: Option<String>, role: Option<UserRole>) -> Result<User, sqlx::Error> {
+ pub async fn create_user(
+ &self,
+ user_id: Option<String>,
+ role: Option<UserRole>,
+ ) -> Result<User, sqlx::Error> {
let user_id = user_id.unwrap_or_else(|| Uuid::new_v4().to_string());
let role = role.unwrap_or_default();
sqlx::query_as::<_, User>(
- "INSERT INTO users (user_id, role) VALUES (?, ?) RETURNING id, user_id, role"
+ "INSERT INTO users (user_id, role) VALUES (?, ?) RETURNING id, user_id, role",
)
.bind(user_id)
.bind(role)
@@ -63,7 +62,7 @@ impl<'a> UserRepository<'a> {
pub async fn update_user(&self, id: i64, role: UserRole) -> Result<User, sqlx::Error> {
sqlx::query_as::<_, User>(
- "UPDATE users SET role = ? WHERE id = ? RETURNING id, user_id, role"
+ "UPDATE users SET role = ? WHERE id = ? RETURNING id, user_id, role",
)
.bind(role)
.bind(id)
@@ -83,7 +82,7 @@ impl<'a> UserRepository<'a> {
#[cfg(test)]
mod tests {
use super::*;
- use sqlx::{SqlitePool, Executor};
+ use sqlx::{Executor, SqlitePool};
use tokio;
async fn setup_db() -> SqlitePool {
@@ -93,8 +92,10 @@ mod tests {
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id TEXT NOT NULL UNIQUE,
role TEXT NOT NULL DEFAULT 'user'
- );"
- ).await.unwrap();
+ );",
+ )
+ .await
+ .unwrap();
pool
}
@@ -104,7 +105,11 @@ mod tests {
let repo = UserRepository { db: &db };
let user = repo.create_user(None, Some(UserRole::Admin)).await.unwrap();
assert_eq!(user.role, UserRole::Admin);
- let fetched = repo.get_user_by_user_id(&user.user_id).await.unwrap().unwrap();
+ let fetched = repo
+ .get_user_by_user_id(&user.user_id)
+ .await
+ .unwrap()
+ .unwrap();
assert_eq!(fetched.user_id, user.user_id);
}
@@ -136,4 +141,4 @@ mod tests {
let users = repo.list_users().await.unwrap();
assert_eq!(users.len(), 2);
}
-} \ No newline at end of file
+}