backbone-bucket 0.2.1

Bucket Bounded Context: File Storage Module for Backbone Framework
Documentation
//! Validator for StoredFile entity
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! Returns an `EntityValidator<StoredFile>` pre-loaded with schema-derived
//! field rules. Extend in the `// <<< CUSTOM` zone.

use backbone_core::{EntityValidator, ValidationErrors, ValidationError};
use backbone_core::{NonNegative, OptionalNotBlank, RequiredString};
use crate::domain::entity::StoredFile;

/// Validator type alias for StoredFile entities.
pub type StoredFileValidator = EntityValidator<StoredFile>;

/// Build a validator for StoredFile with all schema-defined field rules.
pub fn stored_file_validator() -> StoredFileValidator {
    EntityValidator::new()
        .rule(RequiredString::new("path", |e: &StoredFile| &e.path))
        .rule(RequiredString::new("original_name", |e: &StoredFile| &e.original_name))
        .rule(NonNegative::new("size_bytes", |e: &StoredFile| e.size_bytes))
        .rule(RequiredString::new("mime_type", |e: &StoredFile| &e.mime_type))
        .rule(OptionalNotBlank::new("checksum", |e: &StoredFile| e.checksum.as_deref()))
        .rule(OptionalNotBlank::new("compression_algorithm", |e: &StoredFile| e.compression_algorithm.as_deref()))
        .rule(OptionalNotBlank::new("thumbnail_path", |e: &StoredFile| e.thumbnail_path.as_deref()))
        .rule(OptionalNotBlank::new("cdn_url", |e: &StoredFile| e.cdn_url.as_deref()))
        .rule(OptionalNotBlank::new("owner_module", |e: &StoredFile| e.owner_module.as_deref()))
        .rule(OptionalNotBlank::new("owner_entity", |e: &StoredFile| e.owner_entity.as_deref()))
        .rule(OptionalNotBlank::new("field_name", |e: &StoredFile| e.field_name.as_deref()))
        .rule(RequiredString::new("storage_key", |e: &StoredFile| &e.storage_key))
        .rule(NonNegative::new("download_count", |e: &StoredFile| e.download_count as i64))
    // <<< CUSTOM RULES
    // hook rule: path_length (implement in CUSTOM zone)
    // hook rule: no_path_traversal (implement in CUSTOM zone)
    // hook rule: filename_length (implement in CUSTOM zone)
    // hook rule: valid_mime_type (implement in CUSTOM zone)
    // hook rule: file_not_purged (implement in CUSTOM zone)
    // hook rule: quarantine_admin_only (implement in CUSTOM zone)
    // END CUSTOM RULES
}

// <<< CUSTOM
// END CUSTOM