use backbone_core::{EntityValidator, ValidationErrors, ValidationError};
use backbone_core::{NonNegative, OptionalNotBlank, RequiredString};
use crate::domain::entity::FileVersion;
pub type FileVersionValidator = EntityValidator<FileVersion>;
pub fn file_version_validator() -> FileVersionValidator {
EntityValidator::new()
.rule(RequiredString::new("storage_key", |e: &FileVersion| &e.storage_key))
.rule(RequiredString::new("storage_backend", |e: &FileVersion| &e.storage_backend))
.rule(RequiredString::new("name", |e: &FileVersion| &e.name))
.rule(RequiredString::new("mime_type", |e: &FileVersion| &e.mime_type))
.rule(OptionalNotBlank::new("checksum_md5", |e: &FileVersion| e.checksum_md5.as_deref()))
.rule(OptionalNotBlank::new("checksum_sha256", |e: &FileVersion| e.checksum_sha256.as_deref()))
.rule(OptionalNotBlank::new("change_summary", |e: &FileVersion| e.change_summary.as_deref()))
.rule(NonNegative::new("size_bytes", |e: &FileVersion| e.size_bytes))
}