diff options
Diffstat (limited to 'validator_derive/src/quoting.rs')
| -rw-r--r-- | validator_derive/src/quoting.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/validator_derive/src/quoting.rs b/validator_derive/src/quoting.rs index dc466ac..4c81037 100644 --- a/validator_derive/src/quoting.rs +++ b/validator_derive/src/quoting.rs @@ -465,6 +465,9 @@ pub fn quote_field_validation( Validator::NonControlCharacter => { validations.push(quote_non_control_character_validation(&field_quoter, validation)) } + Validator::Required => { + validations.push(quote_required_validation(&field_quoter, validation)) + } } } @@ -501,3 +504,23 @@ pub fn quote_schema_validation(validation: Option<SchemaValidation>) -> proc_mac quote!() } } + +pub fn quote_required_validation( + field_quoter: &FieldQuoter, + validation: &FieldValidation, +) -> proc_macro2::TokenStream { + let field_name = &field_quoter.name; + let ident = &field_quoter.ident; + let validator_param = quote!(&self.#ident); + + let quoted_error = quote_error(&validation); + let quoted = quote!( + if !::validator::validate_required(#validator_param) { + #quoted_error + err.add_param(::std::borrow::Cow::from("value"), &#validator_param); + errors.add(#field_name, err); + } + ); + + quoted +} |
