use crate::validation_report::result::ValidationResult;
use rudof_rdf::rdf_core::term::Object;
use shacl_ir::shape_label_idx::ShapeLabelIdx;
use std::collections::HashMap;
#[derive(Debug, Clone, Default)]
pub struct ValidationCache {
cache: HashMap<(Object, ShapeLabelIdx), Vec<ValidationResult>>,
}
impl ValidationCache {
pub fn new() -> Self {
Self { cache: HashMap::new() }
}
pub fn record(&mut self, node: Object, shape_idx: ShapeLabelIdx, results: Vec<ValidationResult>) {
self.cache.insert((node, shape_idx), results);
}
pub fn has_validated(&self, node: &Object, shape_idx: ShapeLabelIdx) -> bool {
self.cache.contains_key(&(node.clone(), shape_idx))
}
pub fn get_results(&self, node: &Object, shape_idx: ShapeLabelIdx) -> Option<&Vec<ValidationResult>> {
self.cache.get(&(node.clone(), shape_idx))
}
}