oc-session 0.1.0

Global OpenCode session browser and resume tool
use crate::{config::Config, db};

pub fn run(cfg: &Config, options: db::Options) -> anyhow::Result<()> {
    let paths = db::discover(cfg);
    println!("OpenCode DBs:");
    if paths.is_empty() {
        println!("  none found");
    }
    let diagnoses = db::diagnose(&paths, options);
    for diagnosis in &diagnoses {
        match (diagnosis.sessions, diagnosis.error.as_deref()) {
            (Some(count), _) => println!("  ok     {:>5}  {}", count, diagnosis.path.display()),
            (_, Some(error)) => {
                println!("  error         {} ({})", diagnosis.path.display(), error)
            }
            _ => println!("  unknown       {}", diagnosis.path.display()),
        }
    }
    println!();
    println!(
        "Sessions found: {}",
        db::load(&paths, cfg.limit, options).len()
    );
    println!("Resume command: {}", cfg.resume_command);
    Ok(())
}