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)]
pub struct ServerSettings {
pub url: String,
}
impl Settings {
pub fn new() -> Result<Self, config::ConfigError> {
// Load .env file first
dotenvy::dotenv().ok();
// Merge settings from multiple sources
let builder = config::Config::builder()
.add_source(config::File::with_name("Settings").required(false)) // Settings.toml optional
.add_source(Environment::default().separator("_"));
.add_source(File::with_name("Settings").required(false))
.add_source(
Environment::default()
.separator("_") // "APP" maps to struct `app`
.try_parsing(true),
);
builder.build()?.try_deserialize()
}