Move root schema definitions into Metadata

This commit is contained in:
Graham Esau 2019-10-13 22:42:34 +01:00
parent c78d721fc5
commit f38f58d1e8
3 changed files with 6 additions and 5 deletions

View file

@ -35,12 +35,13 @@ macro_rules! impl_merge {
}
impl_merge!(SchemaObject {
merge: definitions extensions instance_type enum_values
merge: extensions instance_type enum_values
metadata subschemas number string array object,
or: format const_value reference,
});
impl_merge!(Metadata {
merge: definitions,
or: schema id title description,
});

View file

@ -129,7 +129,7 @@ impl SchemaGenerator {
let metadata = schema.metadata.get_or_insert_with(Default::default);
metadata.schema = Some("http://json-schema.org/draft-07/schema#".to_owned());
metadata.title = Some(T::schema_name());
schema.definitions.extend(self.definitions().clone());
metadata.definitions.extend(self.definitions().clone());
Ok(schema)
}
@ -138,7 +138,7 @@ impl SchemaGenerator {
let metadata = schema.metadata.get_or_insert_with(Default::default);
metadata.schema = Some("http://json-schema.org/draft-07/schema#".to_owned());
metadata.title = Some(T::schema_name());
schema.definitions.extend(self.into_definitions());
metadata.definitions.extend(self.into_definitions());
Ok(schema)
}

View file

@ -48,8 +48,6 @@ pub struct SchemaObject {
pub enum_values: Option<Vec<Value>>,
#[serde(rename = "const", skip_serializing_if = "Option::is_none")]
pub const_value: Option<Value>,
#[serde(alias = "$defs", skip_serializing_if = "Map::is_empty")]
pub definitions: Map<String, Schema>,
#[serde(flatten, deserialize_with = "skip_if_default")]
pub subschemas: Option<Box<SubschemaValidation>>,
#[serde(flatten, deserialize_with = "skip_if_default")]
@ -126,6 +124,8 @@ pub struct Metadata {
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(alias = "$defs", skip_serializing_if = "Map::is_empty")]
pub definitions: Map<String, Schema>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default, JsonSchema)]