use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
#[serde(deny_unknown_fields)]
pub struct SchemaMetadata {
pub schema_version: Option<u32>,
}
impl SchemaMetadata {
pub fn new(schema_version: Option<u32>) -> Result<Self, SchemaMetadataError> {
let metadata = Self { schema_version };
metadata.validate()?;
Ok(metadata)
}
pub fn validate(&self) -> Result<(), SchemaMetadataError> {
if self.schema_version == Some(0) {
return Err(SchemaMetadataError::InvalidVersion);
}
Ok(())
}
}
#[derive(Clone, Debug, Eq, thiserror::Error, PartialEq)]
pub enum SchemaMetadataError {
#[error("schema_version must be greater than zero when present")]
InvalidVersion,
}