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