use schemars::generate::SchemaSettings;
use schemars::transform::RecursiveTransform;
fn settings() -> SchemaSettings {
SchemaSettings::draft2020_12().with_transform(RecursiveTransform(|schema: &mut schemars::Schema| {
schema.remove("default");
}))
}
pub fn schema<T: schemars::JsonSchema>() -> serde_json::Value {
settings().into_generator().into_root_schema_for::<T>().to_value()
}
#[cfg(feature = "gpu")]
pub fn schemas() -> serde_json::Value {
let mut inputs = settings().into_generator();
inputs.subschema_for::<crate::Scene>();
inputs.subschema_for::<crate::Data>();
inputs.subschema_for::<crate::Patch>();
inputs.subschema_for::<crate::Query>();
inputs.subschema_for::<crate::Camera>();
inputs.subschema_for::<crate::Fit>();
inputs.subschema_for::<crate::Budget>();
inputs.subschema_for::<crate::Shot>();
let mut settings = settings().for_serialize();
settings.definitions_path = "/outputs".into();
let mut outputs = settings.into_generator();
outputs.subschema_for::<crate::Event>();
outputs.subschema_for::<crate::Stats>();
outputs.subschema_for::<crate::Work>();
outputs.subschema_for::<crate::Description>();
outputs.subschema_for::<crate::Rows>();
outputs.subschema_for::<crate::Camera>();
outputs.subschema_for::<crate::Budget>();
outputs.subschema_for::<crate::Value>();
outputs.subschema_for::<crate::Error>();
serde_json::json!({
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$defs": inputs.take_definitions(true),
"outputs": outputs.take_definitions(true),
})
}