use backbone_core::{EntityValidator, ValidationErrors, ValidationError};
use backbone_core::{NonNegative, OptionalNotBlank, RequiredString};
use crate::domain::entity::Account;
pub type AccountValidator = EntityValidator<Account>;
pub fn account_validator() -> AccountValidator {
EntityValidator::new()
.rule(RequiredString::new("account_number", |e: &Account| &e.account_number))
.rule(RequiredString::new("account_code", |e: &Account| &e.account_code))
.rule(RequiredString::new("name", |e: &Account| &e.name))
.rule(OptionalNotBlank::new("description", |e: &Account| e.description.as_deref()))
.rule(NonNegative::new("level", |e: &Account| e.level as i64))
.rule(OptionalNotBlank::new("path", |e: &Account| e.path.as_deref()))
.rule(RequiredString::new("currency", |e: &Account| &e.currency))
.rule(OptionalNotBlank::new("notes", |e: &Account| e.notes.as_deref()))
.rule(OptionalNotBlank::new("chart_code", |e: &Account| e.chart_code.as_deref()))
.rule(OptionalNotBlank::new("chart_version", |e: &Account| e.chart_version.as_deref()))
}