From 1c2873b3059f3e4d6bd02307ec5b22f761ce1c80 Mon Sep 17 00:00:00 2001 From: Dawid Rycerz Date: Mon, 14 Jul 2025 20:35:00 +0300 Subject: feat: Update routes and fix issues --- src/users.rs | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) (limited to 'src/users.rs') 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, role: Option) -> Result { + pub async fn create_user( + &self, + user_id: Option, + role: Option, + ) -> Result { 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 { 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 +} -- cgit v1.2.3