Add document for Input Validator with Extensions
This commit is contained in:
parent
a371cc562c
commit
3bc4aa19bb
|
@ -85,3 +85,35 @@ impl InputValueValidator for MustBeZero {
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
Here is an example of a custom validator with extensions (return `async_graphql::Error`):
|
||||
|
||||
```rust
|
||||
pub struct Email;
|
||||
|
||||
impl InputValueValidator for Email {
|
||||
fn is_valid_with_extensions(&self, value: &Value) -> Result<(), Error> {
|
||||
if let Value::String(s) = value {
|
||||
if &s.to_lowercase() != s {
|
||||
return Err(Error::new("Validation Error").extend_with(|_, e| {
|
||||
e.set("key", "email_must_lowercase")
|
||||
}));
|
||||
}
|
||||
|
||||
if !validate_non_control_character(s) {
|
||||
return Err(Error::new("Validation Error").extend_with(|_, e| {
|
||||
e.set("key", "email_must_no_non_control_character")
|
||||
}));
|
||||
}
|
||||
|
||||
if !validate_email(s) {
|
||||
return Err(Error::new("Validation Error").extend_with(|_, e| {
|
||||
e.set("key", "invalid_email_format")
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
Loading…
Reference in New Issue
Block a user