use serde::{Deserialize, Serialize};
use crate::manifest::Record;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FormatCount {
pub format: String,
pub files: u64,
pub bytes: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SizeOutlier {
pub path: String,
pub bytes: u64,
pub format: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ScanReport {
pub root: String,
pub rules_version: String,
pub files: u64,
pub bytes: u64,
pub formats: Vec<FormatCount>,
pub outliers: Vec<SizeOutlier>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct StatusCounts {
pub converted: u64,
pub failed: u64,
pub unsupported: u64,
pub skipped_unchanged: u64,
pub dedup: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RunReport {
pub division: String,
pub root: String,
pub sources: u64,
pub special_entries: u64,
pub counts: StatusCounts,
pub warnings: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DivisionStatus {
pub division: String,
pub sources: u64,
pub with_text: u64,
pub coverage: f64,
pub counts: StatusCounts,
pub warnings: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StatusReport {
pub divisions: Vec<DivisionStatus>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExplainEntry {
pub division: String,
pub record: Record,
}