use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RetentionSettings {
#[serde(default = "default_deactivated_collection_retention_days")]
pub deactivated_collection_retention_days: u32,
#[serde(default = "default_gc_sweep_interval_secs")]
pub gc_sweep_interval_secs: u64,
}
impl Default for RetentionSettings {
fn default() -> Self {
Self {
deactivated_collection_retention_days: default_deactivated_collection_retention_days(),
gc_sweep_interval_secs: default_gc_sweep_interval_secs(),
}
}
}
impl RetentionSettings {
pub fn sweep_interval(&self) -> std::time::Duration {
std::time::Duration::from_secs(self.gc_sweep_interval_secs)
}
pub fn retention_window(&self) -> std::time::Duration {
std::time::Duration::from_secs(
u64::from(self.deactivated_collection_retention_days) * 24 * 60 * 60,
)
}
}
fn default_deactivated_collection_retention_days() -> u32 {
7
}
fn default_gc_sweep_interval_secs() -> u64 {
60
}