use std::path::PathBuf;
use serde::{Deserialize, Serialize};
use crate::scrub::ScrubConfig;
pub const DEFAULT_RECENCY_HALF_LIFE_HOURS: f64 = 72.0;
pub const DEFAULT_RECENCY_HALF_LIFE_SECS: f64 = DEFAULT_RECENCY_HALF_LIFE_HOURS * 3600.0;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct Config {
pub max_entries: usize,
pub token_budget: usize,
pub db_path: PathBuf,
pub eviction_policy: EvictionPolicy,
pub recency_half_life_secs: f64,
pub scrub: ScrubConfig,
}
impl Default for Config {
fn default() -> Self {
Self {
max_entries: 10_000,
token_budget: 8192,
db_path: PathBuf::from(":memory:"),
eviction_policy: EvictionPolicy::Lru,
recency_half_life_secs: DEFAULT_RECENCY_HALF_LIFE_SECS,
scrub: ScrubConfig::default(),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[non_exhaustive]
pub enum EvictionPolicy {
Lru,
}