athena_rs 3.23.0

Hyper performant polyglot Database driver
Documentation
use std::time::Duration;

#[derive(Debug, Clone)]
pub struct DaemonRuntimeConfig {
    pub daemon_id_override: Option<String>,
    pub clone_worker_enabled: bool,
    pub clone_worker_poll_interval: Duration,
    pub clone_worker_lease_ttl_secs: i64,
    pub clone_worker_max_attempts: i32,
    pub spawn_legacy_workers: bool,
}

impl Default for DaemonRuntimeConfig {
    fn default() -> Self {
        Self {
            daemon_id_override: std::env::var("ATHENA_DAEMON_ID")
                .ok()
                .filter(|value| !value.trim().is_empty()),
            clone_worker_enabled: std::env::var("ATHENA_DAEMON_CLONE_ENABLED")
                .map(|value| !matches!(value.as_str(), "0" | "false" | "FALSE" | "no" | "NO"))
                .unwrap_or(true),
            clone_worker_poll_interval: Duration::from_millis(
                std::env::var("ATHENA_DAEMON_CLONE_POLL_MS")
                    .ok()
                    .and_then(|value| value.parse::<u64>().ok())
                    .unwrap_or(3_000)
                    .max(500),
            ),
            clone_worker_lease_ttl_secs: std::env::var("ATHENA_DAEMON_CLONE_LEASE_TTL_SECS")
                .ok()
                .and_then(|value| value.parse::<i64>().ok())
                .unwrap_or(900)
                .max(60),
            clone_worker_max_attempts: std::env::var("ATHENA_DAEMON_CLONE_MAX_ATTEMPTS")
                .ok()
                .and_then(|value| value.parse::<i32>().ok())
                .unwrap_or(3)
                .clamp(1, 10),
            spawn_legacy_workers: std::env::var("ATHENA_DAEMON_SPAWN_LEGACY_WORKERS")
                .map(|value| !matches!(value.as_str(), "0" | "false" | "FALSE" | "no" | "NO"))
                .unwrap_or(true),
        }
    }
}