use backbone_core::{EntityValidator, ValidationErrors, ValidationError};
use backbone_core::{NonNegative, OptionalNotBlank, RequiredString};
use crate::domain::entity::Bucket;
pub type BucketValidator = EntityValidator<Bucket>;
pub fn bucket_validator() -> BucketValidator {
EntityValidator::new()
.rule(RequiredString::new("name", |e: &Bucket| &e.name))
.rule(RequiredString::new("slug", |e: &Bucket| &e.slug))
.rule(OptionalNotBlank::new("description", |e: &Bucket| e.description.as_deref()))
.rule(RequiredString::new("root_path", |e: &Bucket| &e.root_path))
.rule(NonNegative::new("file_count", |e: &Bucket| e.file_count as i64))
.rule(NonNegative::new("total_size_bytes", |e: &Bucket| e.total_size_bytes))
}