From 9dbfeef94f3fe7924d7218a9063b06476013eebf Mon Sep 17 00:00:00 2001 From: Mika Date: Fri, 20 Jun 2025 10:37:40 +0200 Subject: [PATCH] refactor: reorganize module imports for consistency and clarity --- crates/backend/src/controller.rs | 3 ++- crates/backend/src/controller/project.rs | 2 +- crates/backend/src/controller/user.rs | 2 +- crates/backend/src/db/project.rs | 2 +- crates/backend/src/db/user.rs | 2 +- crates/backend/src/lib.rs | 34 ++---------------------- crates/backend/src/main.rs | 32 +++------------------- crates/backend/src/utils.rs | 29 ++++++++++++++++++++ crates/backend/src/utoipa.rs | 2 +- 9 files changed, 41 insertions(+), 67 deletions(-) create mode 100644 crates/backend/src/utils.rs diff --git a/crates/backend/src/controller.rs b/crates/backend/src/controller.rs index ee8e8a5..979c287 100644 --- a/crates/backend/src/controller.rs +++ b/crates/backend/src/controller.rs @@ -1,6 +1,7 @@ use actix_web::web::{self, ServiceConfig}; -pub mod auth; // TODO: Refactor to use re-exports instead of making module public +// TODO: Refactor to use re-exports instead of making module public +pub mod auth; pub mod class; pub mod group; pub mod project; diff --git a/crates/backend/src/controller/project.rs b/crates/backend/src/controller/project.rs index 476e954..2ff4524 100644 --- a/crates/backend/src/controller/project.rs +++ b/crates/backend/src/controller/project.rs @@ -4,7 +4,7 @@ use validator::Validate; use crate::db::project::CreateProject; use crate::db::Database; -use crate::entity; +use crate::db::entity; use crate::error::ApiError; pub fn setup(cfg: &mut actix_web::web::ServiceConfig) { diff --git a/crates/backend/src/controller/user.rs b/crates/backend/src/controller/user.rs index b2b3247..890147f 100644 --- a/crates/backend/src/controller/user.rs +++ b/crates/backend/src/controller/user.rs @@ -1,4 +1,4 @@ -use crate::{Database, entity, error::ApiError}; +use crate::{Database, db::entity, error::ApiError}; use actix_web::{Responder, delete, get, post, put, web}; use serde::Deserialize; use utoipa::ToSchema; diff --git a/crates/backend/src/db/project.rs b/crates/backend/src/db/project.rs index 23df789..e5c453e 100644 --- a/crates/backend/src/db/project.rs +++ b/crates/backend/src/db/project.rs @@ -2,7 +2,7 @@ use super::Database; use crate::error::ApiError; use log::debug; -use crate::entity::project; +use crate::db::entity::project; use sea_orm::ActiveValue::{NotSet, Set, Unchanged}; use sea_orm::{ActiveModelTrait, DeleteResult, EntityTrait}; use serde::Deserialize; diff --git a/crates/backend/src/db/user.rs b/crates/backend/src/db/user.rs index 4e5cf28..8aaf9cc 100644 --- a/crates/backend/src/db/user.rs +++ b/crates/backend/src/db/user.rs @@ -10,7 +10,7 @@ use sea_orm::{ }; use uuid::Uuid; -use crate::{Database, entity}; +use crate::{Database, db::entity}; impl Database { pub async fn get_users(&self) -> Result, ApiError> { diff --git a/crates/backend/src/lib.rs b/crates/backend/src/lib.rs index d36f5c5..e8802cb 100644 --- a/crates/backend/src/lib.rs +++ b/crates/backend/src/lib.rs @@ -2,38 +2,8 @@ pub mod controller; pub mod db; pub mod error; pub mod utoipa; +pub mod utils; pub use db::Database; pub use db::entity; - -use dotenvy; -use std::env; - -#[cfg(not(test))] -fn get_env_var(name: &str) -> dotenvy::Result { - dotenvy::var(name) -} - -#[cfg(test)] -fn get_env_var(name: &str) -> Result { - std::env::var(name) -} - -// TODO: Extract build_database_url into a utils module or similar -pub fn build_database_url() -> String { - let db_user = get_env_var("DB_USER").unwrap_or_else(|_| "pgg".to_owned()); - let db_name = get_env_var("DB_NAME").unwrap_or_else(|_| "pgg".to_owned()); - let db_password = get_env_var("DB_PASSWORD").unwrap_or_else(|_| "pgg".to_owned()); - let db_host = get_env_var("DB_HOST").expect("DB_HOST must be set in .env"); - let db_port = get_env_var("DB_PORT") - .map(|x| x.parse::().expect("DB_PORT is not a valid port")) - .unwrap_or(5432); - - let result = format!( - "postgresql://{}:{}@{}:{}/{}", - db_user, db_password, db_host, db_port, db_name - ); - - println!("Database URL: {}", result); - result -} +pub use utils::{build_database_url, get_env_var}; diff --git a/crates/backend/src/main.rs b/crates/backend/src/main.rs index eee7606..3605ea2 100644 --- a/crates/backend/src/main.rs +++ b/crates/backend/src/main.rs @@ -8,12 +8,13 @@ mod controller; mod db; mod error; mod utoipa; +mod utils; -pub use db::Database; -pub use db::entity; +use db::Database; use log::info; use migration::Migrator; use migration::MigratorTrait; +use utils::{build_database_url, get_env_var}; #[derive(Clone)] struct AppConfig { @@ -80,15 +81,6 @@ async fn main() -> std::io::Result<()> { .await } -#[cfg(not(test))] -fn get_env_var(name: &str) -> dotenvy::Result { - dotenvy::var(name) -} - -#[cfg(test)] -fn get_env_var(name: &str) -> Result { - std::env::var(name) -} pub async fn connect_to_redis_database() -> RedisSessionStore { let redis_host = get_env_var("REDIS_HOST").expect("REDIS_HOST must be set in .env"); @@ -102,24 +94,6 @@ pub async fn connect_to_redis_database() -> RedisSessionStore { .unwrap() } -pub fn build_database_url() -> String { - let db_user = get_env_var("DB_USER").unwrap_or_else(|_| "pgg".to_owned()); - let db_name = get_env_var("DB_NAME").unwrap_or_else(|_| "pgg".to_owned()); - let db_password = get_env_var("DB_PASSWORD").unwrap_or_else(|_| "pgg".to_owned()); - let db_host = get_env_var("DB_HOST").expect("DB_HOST must be set in .env"); - let db_port = get_env_var("DB_PORT") - .map(|x| x.parse::().expect("DB_PORT is not a valid port")) - .unwrap_or(5432); - - let result = format!( - "postgresql://{}:{}@{}:{}/{}", - db_user, db_password, db_host, db_port, db_name - ); - - println!("Database URL: {}", result); - result -} - #[cfg(test)] mod tests { use super::*; diff --git a/crates/backend/src/utils.rs b/crates/backend/src/utils.rs new file mode 100644 index 0000000..efb1e15 --- /dev/null +++ b/crates/backend/src/utils.rs @@ -0,0 +1,29 @@ +use log::info; + +#[cfg(not(test))] +pub fn get_env_var(name: &str) -> dotenvy::Result { + dotenvy::var(name) +} + +#[cfg(test)] +pub fn get_env_var(name: &str) -> Result { + std::env::var(name) +} + +pub fn build_database_url() -> String { + let db_user = get_env_var("DB_USER").unwrap_or_else(|_| "pgg".to_owned()); + let db_name = get_env_var("DB_NAME").unwrap_or_else(|_| "pgg".to_owned()); + let db_password = get_env_var("DB_PASSWORD").unwrap_or_else(|_| "pgg".to_owned()); + let db_host = get_env_var("DB_HOST").expect("DB_HOST must be set in .env"); + let db_port = get_env_var("DB_PORT") + .map(|x| x.parse::().expect("DB_PORT is not a valid port")) + .unwrap_or(5432); + + let result = format!( + "postgresql://{}:{}@{}:{}/{}", + db_user, db_password, db_host, db_port, db_name + ); + + info!("Database URL: {}", result); + result +} diff --git a/crates/backend/src/utoipa.rs b/crates/backend/src/utoipa.rs index 6814dd4..84646e1 100644 --- a/crates/backend/src/utoipa.rs +++ b/crates/backend/src/utoipa.rs @@ -1,6 +1,6 @@ use utoipa::OpenApi; -use crate::{controller, db, entity, error}; +use crate::{controller, db, db::entity, error}; #[derive(OpenApi)] #[openapi(