use serde::{Deserialize, Serialize};
use std::env;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GcConfig {
#[serde(default)]
pub enabled: bool,
#[serde(default = "default_gc_interval")]
pub interval: u64,
#[serde(default)]
pub dry_run: bool,
#[serde(default = "default_gc_grace")]
pub grace_secs: u64,
}
fn default_gc_interval() -> u64 {
86400 }
fn default_gc_grace() -> u64 {
604_800
}
impl Default for GcConfig {
fn default() -> Self {
Self {
enabled: false,
interval: 86400,
dry_run: false,
grace_secs: default_gc_grace(),
}
}
}
impl GcConfig {
pub(super) fn apply_env_overrides(&mut self) {
if let Ok(val) = env::var("NORA_GC_ENABLED") {
self.enabled = val.to_lowercase() == "true" || val == "1";
}
if let Ok(val) = env::var("NORA_GC_INTERVAL") {
super::parse_env_warn("NORA_GC_INTERVAL", &val, &mut self.interval);
}
if let Ok(val) = env::var("NORA_GC_DRY_RUN") {
self.dry_run = val.to_lowercase() == "true" || val == "1";
}
if let Ok(val) = env::var("NORA_GC_GRACE") {
super::parse_env_warn("NORA_GC_GRACE", &val, &mut self.grace_secs);
}
}
}