versa_semval 0.5.4

Cross-platform module for semantic validation of Versa data
Documentation
use crate::model::ViolationDetails;

use versa::schema::current::SCHEMA_VERSION;

pub fn schema_version_should_be_current<'a>(
  data: &'a serde_json::Value,
) -> Option<ViolationDetails> {
  let schema_version = data.get("schema_version").and_then(|sv| sv.as_str());

  let Some(schema_version) = schema_version else {
    return Some(ViolationDetails { details: None });
  };

  if schema_version != SCHEMA_VERSION {
    return Some(ViolationDetails {
      details: Some(format!(
        "schema_version={}, current={}",
        schema_version, SCHEMA_VERSION
      )),
    });
  }
  None
}