use std::collections::BTreeMap;
use once_cell::sync::Lazy;
use crate::schema::error::SchemaIdError;
use crate::schema::{FieldType, Schema, SchemaId};
const DESCRIPTION: &str = "Publish data schemas for your application.";
pub static SCHEMA_DEFINITION_V1: Lazy<Schema> = Lazy::new(|| {
let mut fields = BTreeMap::new();
fields.insert("name".to_string(), FieldType::String);
fields.insert("description".to_string(), FieldType::String);
fields.insert(
"fields".to_string(),
FieldType::PinnedRelationList(SchemaId::SchemaFieldDefinition(1)),
);
Schema {
id: SchemaId::SchemaDefinition(1),
description: DESCRIPTION.to_owned(),
fields,
}
});
pub fn get_schema_definition(version: u8) -> Result<&'static Schema, SchemaIdError> {
match version {
1 => Ok(&SCHEMA_DEFINITION_V1),
_ => Err(SchemaIdError::UnknownSystemSchema(
SchemaId::SchemaDefinition(version).to_string(),
)),
}
}