parsing environment variables

This commit is contained in:
2025-08-29 23:33:00 +02:00
parent 05afe84ffb
commit 760c930f6d

View File

@@ -15,20 +15,21 @@ pub struct AppSettings {
} }
#[derive(Debug, Deserialize, Clone)] #[derive(Debug, Deserialize, Clone)]
pub struct ServerSettings { pub struct ServerSettings {
pub url: String, pub url: String,
} }
impl Settings { impl Settings {
pub fn new() -> Result<Self, config::ConfigError> { pub fn new() -> Result<Self, config::ConfigError> {
// Load .env file first
dotenvy::dotenv().ok(); dotenvy::dotenv().ok();
// Merge settings from multiple sources
let builder = config::Config::builder() let builder = config::Config::builder()
.add_source(config::File::with_name("Settings").required(false)) // Settings.toml optional .add_source(File::with_name("Settings").required(false))
.add_source(Environment::default().separator("_")); .add_source(
Environment::default()
.separator("_") // "APP" maps to struct `app`
.try_parsing(true),
);
builder.build()?.try_deserialize() builder.build()?.try_deserialize()
} }