EntryValidator

Trait EntryValidator 

Source
pub trait EntryValidator: Send + Sync {
    // Required method
    fn validate(
        &self,
        key: &str,
        data: &HashMap<String, DataValue>,
    ) -> Result<(), Box<dyn Error + Send + Sync>>;
}
Expand description

Trait for custom entry validation

Implement this trait to provide custom validation logic for entries being added to a DatabaseBuilder. Use with DatabaseBuilder::with_validator.

For schema-based validation, use DatabaseBuilderExt::with_schema instead, which uses the built-in SchemaValidator. Trait for validating entry data before insertion into a database

Implement this trait to provide custom validation logic for entries being added to a DatabaseBuilder.

§Example

use matchy_format::{DatabaseBuilder, EntryValidator};
use matchy_data_format::DataValue;
use std::collections::HashMap;
use std::error::Error;

struct RequiredFieldValidator {
    required_fields: Vec<String>,
}

impl EntryValidator for RequiredFieldValidator {
    fn validate(
        &self,
        key: &str,
        data: &HashMap<String, DataValue>,
    ) -> Result<(), Box<dyn Error + Send + Sync>> {
        for field in &self.required_fields {
            if !data.contains_key(field) {
                return Err(format!(
                    "Entry '{}': missing required field '{}'",
                    key, field
                ).into());
            }
        }
        Ok(())
    }
}

let validator = RequiredFieldValidator {
    required_fields: vec!["threat_level".to_string(), "source".to_string()],
};

let mut builder = DatabaseBuilder::new(MatchMode::CaseSensitive)
    .with_validator(Box::new(validator));

// This will fail validation
builder.add_entry("1.2.3.4", HashMap::new())?;

Required Methods§

Source

fn validate( &self, key: &str, data: &HashMap<String, DataValue>, ) -> Result<(), Box<dyn Error + Send + Sync>>

Validate entry data before insertion

§Arguments
  • key - The entry key (IP, domain, pattern, etc.)
  • data - The data map to be associated with this entry
§Returns
  • Ok(()) if validation passes
  • Err(...) with a descriptive error message if validation fails

Implementors§

Source§

impl EntryValidator for SchemaValidator

Implement EntryValidator trait for SchemaValidator

This allows SchemaValidator to be used with DatabaseBuilder::with_validator() for automatic schema validation during database construction.