Skip to main content

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

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

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.