use semver::Version;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum SchemaOrigin {
Embedded,
Runtime,
}
#[derive(Debug, Clone)]
pub struct SchemaEntry {
pub sector: String,
pub version: Version,
pub json: String,
pub origin: SchemaOrigin,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum SchemaRegistrationError {
InvalidJson(String),
AlreadyExists { sector: String, version: Version },
InvalidVersion(String),
}
impl std::fmt::Display for SchemaRegistrationError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::InvalidJson(msg) => write!(f, "invalid JSON schema: {msg}"),
Self::AlreadyExists { sector, version } => {
write!(f, "schema already exists for {sector} v{version}")
}
Self::InvalidVersion(v) => write!(f, "invalid semver version: {v}"),
}
}
}
impl std::error::Error for SchemaRegistrationError {}