use crate::error::Result;
use crate::profile::DatasetProfile;
use crate::quality::checks::run_checks;
use crate::quality::{QualityIssue, Thresholds};
#[derive(Debug, Clone, serde::Serialize)]
pub struct JsonReport<'a> {
pub profile: &'a DatasetProfile,
pub quality: Vec<QualityIssue>,
}
impl<'a> JsonReport<'a> {
pub fn from_profile(profile: &'a DatasetProfile) -> Self {
let quality = run_checks(profile, &Thresholds::default());
JsonReport { profile, quality }
}
}
pub fn to_json(report: &JsonReport<'_>) -> Result<String> {
Ok(serde_json::to_string_pretty(report)?)
}
pub fn to_json_file(report: &JsonReport<'_>, path: &str) -> Result<()> {
let serialized = to_json(report)?;
std::fs::write(path, serialized)?;
Ok(())
}