use rmcp::schemars;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, schemars::JsonSchema)]
pub struct CacheStatsParams {}
#[derive(Debug, Serialize, schemars::JsonSchema)]
pub(super) struct CacheStatsResponse {
pub blobs_bytes: u64,
pub views_bytes: u64,
pub lance_bytes: u64,
pub git_cache_bytes: u64,
pub telemetry_bytes: u64,
pub blob_count: usize,
pub orphan_blob_count: usize,
pub per_view_file_count: Vec<(String, usize)>,
}
impl From<crate::store_gc::CacheStats> for CacheStatsResponse {
fn from(s: crate::store_gc::CacheStats) -> Self {
Self {
blobs_bytes: s.blobs_bytes,
views_bytes: s.views_bytes,
lance_bytes: s.lance_bytes,
git_cache_bytes: s.git_cache_bytes,
telemetry_bytes: s.telemetry_bytes,
blob_count: s.blob_count,
orphan_blob_count: s.orphan_blob_count,
per_view_file_count: s.per_view_file_count,
}
}
}
#[derive(Debug, Deserialize, Serialize, schemars::JsonSchema)]
pub struct CacheGcParams {}
#[derive(Debug, Serialize, schemars::JsonSchema)]
pub(super) struct CacheGcResponse {
pub scanned: usize,
pub removed: usize,
pub bytes_freed: u64,
}
impl From<crate::store_gc::GcReport> for CacheGcResponse {
fn from(r: crate::store_gc::GcReport) -> Self {
Self {
scanned: r.scanned,
removed: r.removed,
bytes_freed: r.bytes_freed,
}
}
}
#[derive(Debug, Deserialize, Serialize, schemars::JsonSchema)]
pub struct CacheClearParams {
pub component: String,
#[serde(default)]
pub confirm: bool,
}
#[derive(Debug, Serialize, schemars::JsonSchema)]
pub(super) struct CacheClearResponse {
pub component: String,
pub cleared: bool,
}