diff --git a/library/src/res/validator.rs b/library/src/res/validator.rs index c05d492..abcd6a6 100644 --- a/library/src/res/validator.rs +++ b/library/src/res/validator.rs @@ -5,40 +5,43 @@ use validator::Validate; use super::response::{ResData, ResErr, ResResult}; pub fn validate_params(params: &impl Validate, _local: &str) -> ResResult> { - params.validate().map_err(|e| { - let mut errors = vec![]; - for (_, err) in e.errors().iter() { - match err { - validator::ValidationErrorsKind::Struct(err) => { - err.field_errors().iter().for_each(|(_field, errs)| { - errs.iter().for_each(|e| { - if let Some(Cow::Owned(msg)) = e.message.clone() { - errors.push(msg); - } - }); - }); - }, - validator::ValidationErrorsKind::List(err) => { - for (_, err) in err.iter() { + 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| { - if let Some(Cow::Owned(msg)) = e.message.clone() { - errors.push(msg); - } + let msg = e.message.clone().unwrap_or_default(); + let msg_str = msg.to_string(); + errors.push(msg_str) }); }); - } - }, - validator::ValidationErrorsKind::Field(err) => { - err.iter().for_each(|e| { - if let Some(Cow::Owned(msg)) = e.message.clone() { - errors.push(msg); + }, + 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(); + let msg_str = msg.to_string(); + errors.push(msg_str) + }); + }); } - }); - }, - }; - } - ResErr::params(errors.join(";")) - })?; - Result::Ok(ResData::none()) + }, + validator::ValidationErrorsKind::Field(err) => { + err.iter().for_each(|e| { + let msg = e.message.clone().unwrap_or_default(); + let msg_str = msg.to_string(); + errors.push(msg_str) + }); + }, + }; + } + Err(ResErr::params(errors.join(";"))) + }, + } } \ No newline at end of file