cooplan-definition-schema-validator 0.2.2

Validate JSON values against a definition
Documentation
use serde_json::Value;

use crate::error::{Error, ErrorKind};

pub fn validate_string(attribute_value: &Value) -> Result<(), Error> {
    match attribute_value.as_str() {
        Some(_) => Ok(()),
        None => Err(Error::new(
            ErrorKind::InvalidValue,
            "failed to convert attribute value to string".to_string(),
        )),
    }
}

pub fn validate_integer(attribute_value: &Value) -> Result<(), Error> {
    match attribute_value.as_i64() {
        Some(_) => Ok(()),
        None => Err(Error::new(
            ErrorKind::InvalidValue,
            "failed to convert attribute value to integer".to_string(),
        )),
    }
}

pub fn validate_decimal(attribute_value: &Value) -> Result<(), Error> {
    match attribute_value.as_f64() {
        Some(_) => Ok(()),
        None => Err(Error::new(
            ErrorKind::InvalidValue,
            "failed to convert attribute value to decimal".to_string(),
        )),
    }
}

pub fn validate_boolean(attribute_value: &Value) -> Result<(), Error> {
    match attribute_value.as_bool() {
        Some(_) => Ok(()),
        None => Err(Error::new(
            ErrorKind::InvalidValue,
            "failed to convert attribute value to boolean".to_string(),
        )),
    }
}