aboutsummaryrefslogtreecommitdiffstats
path: root/validator_derive/src/quoting.rs
diff options
context:
space:
mode:
Diffstat (limited to 'validator_derive/src/quoting.rs')
-rw-r--r--validator_derive/src/quoting.rs23
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
+}