Skip to main content

river_data_core/models/
config.rs

1use crate::env;
2
3#[derive(Debug, Clone)]
4pub struct RunnerConfig {
5    pub api_base_url: String,
6    pub client_id: String,
7    pub client_secret: String,
8    pub instance_id: String,
9    pub heartbeat_interval_secs: u64,
10    pub sync_interval_secs: u64,
11    pub enrollment_retry_secs: u64,
12    pub retry_max: u32,
13    pub retry_delay_secs: u64,
14}
15
16impl RunnerConfig {
17    pub fn from_env() -> Result<Self, String> {
18        Ok(Self {
19            api_base_url: env::require("API_BASE_URL")?,
20            client_id: env::require("SERVICE_CLIENT_ID")?,
21            client_secret: env::require("SERVICE_CLIENT_SECRET")?,
22            instance_id: env::string_or("INSTANCE_ID", "default"),
23            heartbeat_interval_secs: env::parse_or("HEARTBEAT_INTERVAL_SECONDS", 30),
24            sync_interval_secs: env::parse_or("SYNC_INTERVAL_SECONDS", 300),
25            enrollment_retry_secs: env::parse_or("ENROLLMENT_RETRY_SECONDS", 10),
26            retry_max: env::parse_or("RETRY_MAX", 3),
27            retry_delay_secs: env::parse_or("RETRY_DELAY_SECONDS", 60),
28        })
29    }
30}