Move root schema definitions into Metadata
This commit is contained in:
parent
c78d721fc5
commit
f38f58d1e8
3 changed files with 6 additions and 5 deletions
|
@ -35,12 +35,13 @@ macro_rules! impl_merge {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl_merge!(SchemaObject {
|
impl_merge!(SchemaObject {
|
||||||
merge: definitions extensions instance_type enum_values
|
merge: extensions instance_type enum_values
|
||||||
metadata subschemas number string array object,
|
metadata subschemas number string array object,
|
||||||
or: format const_value reference,
|
or: format const_value reference,
|
||||||
});
|
});
|
||||||
|
|
||||||
impl_merge!(Metadata {
|
impl_merge!(Metadata {
|
||||||
|
merge: definitions,
|
||||||
or: schema id title description,
|
or: schema id title description,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ impl SchemaGenerator {
|
||||||
let metadata = schema.metadata.get_or_insert_with(Default::default);
|
let metadata = schema.metadata.get_or_insert_with(Default::default);
|
||||||
metadata.schema = Some("http://json-schema.org/draft-07/schema#".to_owned());
|
metadata.schema = Some("http://json-schema.org/draft-07/schema#".to_owned());
|
||||||
metadata.title = Some(T::schema_name());
|
metadata.title = Some(T::schema_name());
|
||||||
schema.definitions.extend(self.definitions().clone());
|
metadata.definitions.extend(self.definitions().clone());
|
||||||
Ok(schema)
|
Ok(schema)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ impl SchemaGenerator {
|
||||||
let metadata = schema.metadata.get_or_insert_with(Default::default);
|
let metadata = schema.metadata.get_or_insert_with(Default::default);
|
||||||
metadata.schema = Some("http://json-schema.org/draft-07/schema#".to_owned());
|
metadata.schema = Some("http://json-schema.org/draft-07/schema#".to_owned());
|
||||||
metadata.title = Some(T::schema_name());
|
metadata.title = Some(T::schema_name());
|
||||||
schema.definitions.extend(self.into_definitions());
|
metadata.definitions.extend(self.into_definitions());
|
||||||
Ok(schema)
|
Ok(schema)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,8 +48,6 @@ pub struct SchemaObject {
|
||||||
pub enum_values: Option<Vec<Value>>,
|
pub enum_values: Option<Vec<Value>>,
|
||||||
#[serde(rename = "const", skip_serializing_if = "Option::is_none")]
|
#[serde(rename = "const", skip_serializing_if = "Option::is_none")]
|
||||||
pub const_value: Option<Value>,
|
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")]
|
#[serde(flatten, deserialize_with = "skip_if_default")]
|
||||||
pub subschemas: Option<Box<SubschemaValidation>>,
|
pub subschemas: Option<Box<SubschemaValidation>>,
|
||||||
#[serde(flatten, deserialize_with = "skip_if_default")]
|
#[serde(flatten, deserialize_with = "skip_if_default")]
|
||||||
|
@ -126,6 +124,8 @@ pub struct Metadata {
|
||||||
pub title: Option<String>,
|
pub title: Option<String>,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub description: Option<String>,
|
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)]
|
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default, JsonSchema)]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue