Add InvalidJsonSchema error and helper impl for TypeRegistration
This commit is contained in:
parent
f2fd5707f0
commit
16f9c87bdd
@ -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 {
|
impl TryFrom<(&TypeRegistration, &SchemaTypesMetadata)> for JsonSchemaBevyType {
|
||||||
type Error = ();
|
type Error = InvalidJsonSchema;
|
||||||
|
|
||||||
fn try_from(value: (&TypeRegistration, &SchemaTypesMetadata)) -> Result<Self, Self::Error> {
|
fn try_from(value: (&TypeRegistration, &SchemaTypesMetadata)) -> Result<Self, Self::Error> {
|
||||||
let (reg, metadata) = value;
|
let (reg, metadata) = value;
|
||||||
@ -78,13 +85,21 @@ impl TryFrom<(&TypeRegistration, &SchemaTypesMetadata)> for JsonSchemaBevyType {
|
|||||||
let base_schema = type_info.build_schema();
|
let base_schema = type_info.build_schema();
|
||||||
|
|
||||||
let JsonSchemaVariant::Schema(mut typed_schema) = base_schema else {
|
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);
|
typed_schema.reflect_types = metadata.get_registered_reflect_types(reg);
|
||||||
Ok(*typed_schema)
|
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.
|
/// Identifies the JSON Schema version used in the schema.
|
||||||
#[derive(Deserialize, Serialize, Debug, Reflect, PartialEq, Clone)]
|
#[derive(Deserialize, Serialize, Debug, Reflect, PartialEq, Clone)]
|
||||||
pub struct SchemaMarker(String);
|
pub struct SchemaMarker(String);
|
||||||
|
Loading…
Reference in New Issue
Block a user