diff options
Diffstat (limited to 'src/users.rs')
| -rw-r--r-- | src/users.rs | 35 |
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 +} |
