use crate::domain::field_error::FieldError;
pub trait SectorValidator: Send + Sync {
fn validate(&self, data: &serde_json::Value) -> Result<(), Vec<FieldError>>;
}
#[derive(Default)]
pub struct SectorValidatorRegistry {
validators: std::collections::HashMap<String, std::sync::Arc<dyn SectorValidator>>,
}
impl SectorValidatorRegistry {
pub fn new() -> Self {
Self::default()
}
pub fn register(
&mut self,
key: impl Into<String>,
validator: std::sync::Arc<dyn SectorValidator>,
) {
self.validators.insert(key.into(), validator);
}
pub(super) fn get(&self, key: &str) -> Option<&dyn SectorValidator> {
self.validators.get(key).map(std::sync::Arc::as_ref)
}
}