diff --git a/backend/src/config/mod.rs b/backend/src/config/mod.rs index 8b3db52..46534d0 100644 --- a/backend/src/config/mod.rs +++ b/backend/src/config/mod.rs @@ -1,42 +1,57 @@ -use serde::Deserialize; - -#[derive(Debug, Clone, Deserialize)] -pub struct Config { - pub database_url: String, - pub server_host: String, - pub server_port: u16, - /// Enable demo mode - restricts destructive actions and enables demo accounts - #[serde(default)] - pub demo_mode: bool, - /// Secret key for JWT tokens - #[serde(default = "default_jwt_secret")] - pub jwt_secret: String, -} - -fn default_jwt_secret() -> String { - "".to_string() -} - -impl Config { - pub fn from_env() -> Result { - dotenvy::dotenv().ok(); - envy::from_env::() - } - - /// Check if demo mode is enabled - pub fn is_demo(&self) -> bool { - self.demo_mode - } -} - -impl Default for Config { - fn default() -> Self { - Self { - database_url: "postgres://likwid:likwid@localhost:5432/likwid".to_string(), - server_host: "127.0.0.1".to_string(), - server_port: 3000, - demo_mode: false, - jwt_secret: default_jwt_secret(), - } - } -} +use serde::Deserialize; + +#[derive(Debug, Clone, Deserialize)] +pub struct Config { + #[serde(default = "default_database_url")] + pub database_url: String, + #[serde(default = "default_server_host")] + pub server_host: String, + #[serde(default = "default_server_port")] + pub server_port: u16, + /// Enable demo mode - restricts destructive actions and enables demo accounts + #[serde(default)] + pub demo_mode: bool, + /// Secret key for JWT tokens + #[serde(default = "default_jwt_secret")] + pub jwt_secret: String, +} + +fn default_database_url() -> String { + "postgres://likwid:likwid@localhost:5432/likwid".to_string() +} + +fn default_server_host() -> String { + "127.0.0.1".to_string() +} + +fn default_server_port() -> u16 { + 3000 +} + +fn default_jwt_secret() -> String { + "".to_string() +} + +impl Config { + pub fn from_env() -> Result { + dotenvy::dotenv().ok(); + envy::from_env::() + } + + /// Check if demo mode is enabled + pub fn is_demo(&self) -> bool { + self.demo_mode + } +} + +impl Default for Config { + fn default() -> Self { + Self { + database_url: "postgres://likwid:likwid@localhost:5432/likwid".to_string(), + server_host: "127.0.0.1".to_string(), + server_port: 3000, + demo_mode: false, + jwt_secret: default_jwt_secret(), + } + } +} diff --git a/scripts/dev-start.ps1 b/scripts/dev-start.ps1 index 13767c6..454ddf6 100644 --- a/scripts/dev-start.ps1 +++ b/scripts/dev-start.ps1 @@ -23,6 +23,7 @@ New-Item -ItemType Directory -Force -Path $stateDir | Out-Null if (-not $env:POSTGRES_USER) { $env:POSTGRES_USER = 'likwid' } if (-not $env:POSTGRES_PASSWORD) { $env:POSTGRES_PASSWORD = 'likwid' } if (-not $env:POSTGRES_DB) { $env:POSTGRES_DB = 'likwid' } +if (-not $env:JWT_SECRET) { $env:JWT_SECRET = 'dev_jwt_secret_not_for_production' } $env:DATABASE_URL = "postgres://$($env:POSTGRES_USER):$($env:POSTGRES_PASSWORD)@127.0.0.1:5432/$($env:POSTGRES_DB)" # Check if already running