43 lines
1.8 KiB
Rust
43 lines
1.8 KiB
Rust
use i18n::message;
|
|
use validator::Validate;
|
|
|
|
use super::response::{ResData, ResErr, ResResult};
|
|
|
|
pub fn validate_params(params: &impl Validate, local: &str) -> ResResult<ResData<()>> {
|
|
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(";")))
|
|
},
|
|
}
|
|
} |