rag-server-mcp 2.3.3

Sovereign, high-performance RAG MCP server written in Rust for local code and legal search.
use crate::db::Db;
use clap::Args;
use serde::Deserialize;
use std::sync::Arc;
use tokio::sync::Mutex;

#[derive(Debug, Deserialize, Args)]
pub struct DeleteCollectionArgs {
    #[arg(short, long)]
    pub name: String,
}

pub async fn delete_collection(
    db: &Arc<Mutex<Db>>,
    args: DeleteCollectionArgs,
) -> anyhow::Result<String> {
    let db_guard = db.lock().await;

    if !db_guard.collection_exists(&args.name)? {
        return Err(anyhow::anyhow!(
            "Fel: Samlingen '{}' finns inte.",
            args.name
        ));
    }

    let (doc_count, chunk_count) = db_guard.get_collection_stats(&args.name)?;
    db_guard.delete_collection(&args.name)?;

    Ok(format!(
        "✓ Samlingen '{}' är borttagen. {} dokument och {} segment raderade.",
        args.name, doc_count, chunk_count
    ))
}