diff --git a/WatcherAgent/src/config.rs b/WatcherAgent/src/config.rs index f549218..1fe8d60 100644 --- a/WatcherAgent/src/config.rs +++ b/WatcherAgent/src/config.rs @@ -1,11 +1,19 @@ +use config::Config; +use serde::Deserialize; + use crate::models::WatcherConfig; -impl WatcherConfig { +#[derive(Debug, Deserialize, Clone)] +pub struct AppConfig { + pub watcher: WatcherConfig, +} + +impl AppConfig { pub fn from_env() -> Result { // Load .env file (works in both Docker and local development) dotenvy::dotenv().ok(); - let cfg = config::Config::builder() + let cfg = Config::builder() .add_source(config::Environment::with_prefix("WATCHER").separator("_")) .build()?; diff --git a/WatcherAgent/src/main.rs b/WatcherAgent/src/main.rs index eaf150e..a75503b 100644 --- a/WatcherAgent/src/main.rs +++ b/WatcherAgent/src/main.rs @@ -7,7 +7,7 @@ pub mod hardware; pub mod metrics; pub mod models; -use models::WatcherConfig; +use crate::config::AppConfig; use std::error::Error; use std::marker::Send; @@ -27,8 +27,8 @@ async fn flatten( #[tokio::main] async fn main() -> Result<(), Box> { - let config = WatcherConfig::from_env().expect("Failed to load configuration"); - let server_url = config.server_url.clone(); + let config = AppConfig::from_env().expect("Failed to load configuration"); + let server_url = config.watcher.server_url.clone(); // Registration let (server_id, ip) = match api::register_with_server(&server_url).await {