use i18n::message; use validator::Validate; use super::response::{ResData, ResErr, ResResult}; pub fn validate_params(params: &impl Validate, local: &str) -> ResResult> { let validate_err = params.validate(); match validate_err { Ok(_) => Result::Ok(ResData::none()), Err(err) => { let mut errors = vec![]; for (_, err) in err.errors().iter() { match err { validator::ValidationErrorsKind::Struct(err) => { err.field_errors().iter().for_each(|(_field, errs)| { errs.iter().for_each(|e| { let msg = e.message.clone().unwrap_or_default(); errors.push(message!(local, msg.trim())) }); }); }, validator::ValidationErrorsKind::List(err) => { for (_, err) in err.iter() { err.field_errors().iter().for_each(|(_field, errs)| { errs.iter().for_each(|e| { let msg = e.message.clone().unwrap_or_default(); errors.push(message!(local, msg.trim())) }); }); } }, validator::ValidationErrorsKind::Field(err) => { err.iter().for_each(|e| { let msg = e.message.clone().unwrap_or_default(); errors.push(message!(local, msg.trim())) }); }, }; } Err(ResErr::params(errors.join(";"))) }, } }