From 6f55add34d5d1c3e4b8d0e723ab1250de6f4c475 Mon Sep 17 00:00:00 2001 From: Hector van der Aa Date: Sun, 30 Nov 2025 20:15:53 +0100 Subject: [PATCH] Refactor InternalUser to InternalNewUser --- src/backend/Cargo.toml | 1 + src/backend/src/core/mod.rs | 1 + src/backend/src/core/user_routines.rs | 5 +++++ src/backend/src/domain/user.rs | 14 +++++++++++++- src/backend/src/lib.rs | 1 + src/backend/src/router/user_routes.rs | 4 ++-- src/backend/src/state.rs | 4 ++-- 7 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 src/backend/src/core/mod.rs create mode 100644 src/backend/src/core/user_routines.rs diff --git a/src/backend/Cargo.toml b/src/backend/Cargo.toml index 8e85d82..a8530db 100644 --- a/src/backend/Cargo.toml +++ b/src/backend/Cargo.toml @@ -19,6 +19,7 @@ tower = { version = "0.5.2", features = ["tokio", "tracing"] } tower-http = { version = "0.6.7", features = ["cors"] } tracing = { version = "0.1.43", features = ["max_level_debug"] } tracing-subscriber = "0.3.22" +uuid = { version = "1.18.1", features = ["v4", "serde"] } validator = { version = "0.20.0", features = ["derive"] } [build-dependencies] diff --git a/src/backend/src/core/mod.rs b/src/backend/src/core/mod.rs new file mode 100644 index 0000000..f8846e3 --- /dev/null +++ b/src/backend/src/core/mod.rs @@ -0,0 +1 @@ +pub mod user_routines; diff --git a/src/backend/src/core/user_routines.rs b/src/backend/src/core/user_routines.rs new file mode 100644 index 0000000..ee819d5 --- /dev/null +++ b/src/backend/src/core/user_routines.rs @@ -0,0 +1,5 @@ +use std::sync::Arc; + +use crate::{domain::user::NewUser, state::AppState}; + +pub async fn create(state: Arc, new_user: NewUser) -> Result {} diff --git a/src/backend/src/domain/user.rs b/src/backend/src/domain/user.rs index bdb9cc4..d5f1d25 100644 --- a/src/backend/src/domain/user.rs +++ b/src/backend/src/domain/user.rs @@ -28,7 +28,17 @@ pub struct NewUser { } #[derive(Debug, Clone, Deserialize)] +pub struct InternalNewUser { + username: String, + email: Option, + password_hash: String, + first_name: Option, + last_name: Option, +} + +#[derive(Debug, Clone)] pub struct InternalUser { + id: i64, username: String, email: Option, password_hash: String, @@ -38,6 +48,7 @@ pub struct InternalUser { #[derive(Debug, Clone, Serialize)] pub struct User { + id: i64, username: String, email: Option, first_name: Option, @@ -49,7 +60,7 @@ pub enum UserConversionError { HashFailed(password_hash::Error), } -impl TryFrom for InternalUser { +impl TryFrom for InternalNewUser { type Error = UserConversionError; fn try_from(value: NewUser) -> Result { let password_hash = @@ -67,6 +78,7 @@ impl TryFrom for InternalUser { impl From for User { fn from(value: InternalUser) -> Self { Self { + id: value.id, username: value.username, email: value.email, first_name: value.first_name, diff --git a/src/backend/src/lib.rs b/src/backend/src/lib.rs index 8e257ab..733250c 100644 --- a/src/backend/src/lib.rs +++ b/src/backend/src/lib.rs @@ -1,4 +1,5 @@ pub mod auth; +pub mod core; pub mod domain; pub mod router; pub mod state; diff --git a/src/backend/src/router/user_routes.rs b/src/backend/src/router/user_routes.rs index 76e1c05..62f17c1 100644 --- a/src/backend/src/router/user_routes.rs +++ b/src/backend/src/router/user_routes.rs @@ -6,7 +6,7 @@ use tracing::{debug, error, info, warn}; use validator::Validate; use crate::{ - domain::user::{InternalUser, NewUser, User}, + domain::user::{InternalNewUser, NewUser, User}, state::AppState, }; @@ -18,7 +18,7 @@ pub async fn create( return Err(StatusCode::BAD_REQUEST); } - let internal = InternalUser::try_from(new_user).map_err(|e| { + let internal = InternalNewUser::try_from(new_user).map_err(|e| { error!("Conversion to InternalUser failed: {e}"); StatusCode::INTERNAL_SERVER_ERROR })?; diff --git a/src/backend/src/state.rs b/src/backend/src/state.rs index 3ef98b2..53a2e7b 100644 --- a/src/backend/src/state.rs +++ b/src/backend/src/state.rs @@ -1,9 +1,9 @@ use std::collections::HashMap; -use crate::domain::user::InternalUser; +use crate::domain::user::InternalNewUser; pub struct AppState { - pub users: HashMap, + pub users: HashMap, } impl AppState {