use once_cell::sync::Lazy;
use crate::schema::error::SchemaIdError;
use crate::schema::{FieldType, Schema, SchemaDescription, SchemaFields, SchemaId};
const DESCRIPTION: &str = "Definition of a blob file.";
pub static BLOB_V1: Lazy<Schema> = Lazy::new(|| {
let fields = SchemaFields::new(&[
("length", FieldType::Integer),
("mime_type", FieldType::String),
(
"pieces",
FieldType::PinnedRelationList(SchemaId::BlobPiece(1)),
),
])
.unwrap();
let description = SchemaDescription::new(DESCRIPTION).unwrap();
Schema {
id: SchemaId::Blob(1),
description,
fields,
}
});
pub fn get_blob(version: u8) -> Result<&'static Schema, SchemaIdError> {
match version {
1 => Ok(&BLOB_V1),
_ => Err(SchemaIdError::UnknownSystemSchema(
SchemaId::Blob(version).to_string(),
)),
}
}