Add InvalidJsonSchema error and helper impl for TypeRegistration

This commit is contained in:
Piotr Siuszko 2025-06-21 21:55:58 +02:00
parent f2fd5707f0
commit 16f9c87bdd

View File

@ -66,8 +66,15 @@ impl TypeRegistrySchemaReader for TypeRegistry {
}
}
/// Error type for invalid JSON Schema conversions.
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum InvalidJsonSchema {
/// The type cannot be converted to a valid JSON Schema.
InvalidType,
}
impl TryFrom<(&TypeRegistration, &SchemaTypesMetadata)> for JsonSchemaBevyType {
type Error = ();
type Error = InvalidJsonSchema;
fn try_from(value: (&TypeRegistration, &SchemaTypesMetadata)) -> Result<Self, Self::Error> {
let (reg, metadata) = value;
@ -78,13 +85,21 @@ impl TryFrom<(&TypeRegistration, &SchemaTypesMetadata)> for JsonSchemaBevyType {
let base_schema = type_info.build_schema();
let JsonSchemaVariant::Schema(mut typed_schema) = base_schema else {
return Err(());
return Err(InvalidJsonSchema::InvalidType);
};
typed_schema.reflect_types = metadata.get_registered_reflect_types(reg);
Ok(*typed_schema)
}
}
impl TryFrom<&TypeRegistration> for JsonSchemaBevyType {
type Error = InvalidJsonSchema;
fn try_from(value: &TypeRegistration) -> Result<Self, Self::Error> {
(value, &SchemaTypesMetadata::default()).try_into()
}
}
/// Identifies the JSON Schema version used in the schema.
#[derive(Deserialize, Serialize, Debug, Reflect, PartialEq, Clone)]
pub struct SchemaMarker(String);