From 6572f48696caff161650ea4ae378ad860ecdf28c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=BF=90=E5=AE=B6?= Date: Thu, 13 Jun 2024 15:51:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=A1=E9=AA=8C=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=B6=88=E6=81=AF=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/src/res/validator.rs | 65 +++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 31 deletions(-) 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