use crate::model::{SemanticValidationError, SemanticValidationOutput, Violation};
pub fn execute(
data: serde_json::Value,
) -> Result<SemanticValidationOutput, SemanticValidationError> {
let mut violations = vec![];
let rules = crate::rules::rules();
for rule in rules {
if let Some(violation) = (rule.evaluate)(&data) {
violations.push(Violation {
details: violation.details,
rule: rule.name.to_string(),
description: rule.description.to_string(),
});
}
}
Ok(SemanticValidationOutput {
violations,
error: None,
})
}