[][src]Type Definition warpgrapher::engine::validators::Validators

type Validators = HashMap<String, Box<ValidatorFunc>>;

Type alias for a custom function used to validate the input to a resolver

Examples


fn name_validator(value: &Value) -> Result<(), Error> {
    let name = match value {
        Value::Map(m) => match m.get("name") {
            Some(n) => n,
            None => return Err(Error::ValidationFailed {message: "Name missing.".to_string()}),
        },
        _ => return Err(Error::ValidationFailed {message: "Field map missing.".to_string()}),
    };

    match name {
        Value::String(s) => if s == "KENOBI" {
                return Err(Error::ValidationFailed {
                    message: "Cannot be named KENOBI.".to_string()
                });
            } else {
                return Ok(());
            },
        _ => Err(Error::ValidationFailed {message: "Expected a string value.".to_string()}),
     }
}

let mut validators = Validators::new();
validators.insert("name_validator".to_string(), Box::new(name_validator));