river_data_core/models/
config.rs1use 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}