datalab-cli 0.1.0

A powerful CLI for converting, extracting, and processing documents using the Datalab API
Documentation
use crate::cache::Cache;
use crate::error::Result;
use clap::{Args, Subcommand};

#[derive(Subcommand, Debug)]
pub enum CacheCommand {
    /// Clear cached responses
    Clear(ClearArgs),
    /// Show cache statistics
    Stats,
}

#[derive(Args, Debug)]
pub struct ClearArgs {
    /// Only clear entries older than N days
    #[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(())
}