use crate::error::Result;
#[derive(Debug, Clone)]
pub struct DbHealth {
pub path: String,
pub disk_size: u64,
pub entry_counts: Vec<(&'static str, u64)>,
pub healthy: bool,
}
pub trait DbHealthChecker {
fn get_env(&self) -> &heed::Env;
fn is_healthy(&self) -> bool;
fn count_entries(&self) -> Result<Vec<(&'static str, u64)>>;
fn get_health(&self) -> Result<DbHealth> {
let env = self.get_env();
let size = env
.real_disk_size()
.map_err(crate::error::Error::GenericDbError)?;
let path = env.path().to_string_lossy().to_string();
let entry_counts = self.count_entries()?;
Ok(DbHealth {
path,
disk_size: size,
entry_counts,
healthy: self.is_healthy(),
})
}
}