Files
watcheragent/WatcherAgent/src/config.rs

36 lines
886 B
Rust

use config::{Config, Environment, File};
use serde::Deserialize;
#[derive(Debug, Deserialize, Clone)]
pub struct Settings {
pub server: ServerSettings,
pub app: AppSettings,
}
#[derive(Debug, Deserialize, Clone)]
pub struct AppSettings {
pub heartbeat_interval_secs: u64,
pub metrics_interval_secs: u64,
pub port: u16,
}
#[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("_"));
builder.build()?.try_deserialize()
}
}