async-graphql/src/validators/list_validators.rs

51 lines
1.3 KiB
Rust
Raw Normal View History

2020-03-22 01:34:32 +00:00
use crate::validators::InputValueValidator;
use crate::Value;
2020-03-22 01:34:32 +00:00
/// List minimum length validator
pub struct ListMinLength {
/// Must be greater than or equal to this value.
pub length: usize,
}
impl InputValueValidator for ListMinLength {
fn is_valid(&self, value: &Value) -> Option<String> {
if let Value::List(values) = value {
if values.len() < self.length {
Some(format!(
"the value length is {}, but the length must be greater than or equal to {}",
2020-03-22 01:34:32 +00:00
values.len(),
self.length
))
} else {
None
}
} else {
2020-04-19 02:28:52 +00:00
None
2020-03-22 01:34:32 +00:00
}
}
}
/// List maximum length validator
pub struct ListMaxLength {
/// Must be less than or equal to this value.
pub length: usize,
}
impl InputValueValidator for ListMaxLength {
fn is_valid(&self, value: &Value) -> Option<String> {
if let Value::List(values) = value {
if values.len() > self.length {
Some(format!(
"the value length is {}, but the length must be less than or equal to {}",
2020-03-22 01:34:32 +00:00
values.len(),
self.length
))
} else {
None
}
} else {
None
}
}
}