use crate::cache::Cache;
use crate::error::Result;
use clap::{Args, Subcommand};
#[derive(Subcommand, Debug)]
pub enum CacheCommand {
Clear(ClearArgs),
Stats,
}
#[derive(Args, Debug)]
pub struct ClearArgs {
#[arg(long)]
pub older_than: Option<u64>,
}
pub async fn execute(cmd: CacheCommand) -> Result<()> {
match cmd {
CacheCommand::Clear(args) => clear(args).await,
CacheCommand::Stats => stats().await,
}
}
async fn clear(args: ClearArgs) -> Result<()> {
let cache = Cache::new()?;
let stats = cache.clear(args.older_than)?;
println!("{}", serde_json::to_string_pretty(&stats)?);
Ok(())
}
async fn stats() -> Result<()> {
let cache = Cache::new()?;
let stats = cache.stats()?;
println!("{}", serde_json::to_string_pretty(&stats)?);
Ok(())
}