json_utils/schema/
schema_node.rs1use std::collections::HashMap;
2
3use crate::json::JsValue;
4
5use super::*;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8#[serde(untagged)]
9pub enum SchemaNode {
10 ValidNode(ValidNode),
11 InvalidNode(InvalidNode),
12}
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15#[serde(tag = "type")]
16pub enum ValidNode {
17 #[serde(rename = "any")]
18 AnyNode(AnyNode),
19
20 #[serde(rename = "null")]
21 NullNode(NullNode),
22
23 #[serde(rename = "boolean")]
24 BooleanNode(BooleanNode),
25
26 #[serde(rename = "string")]
27 StringNode(StringNode),
28
29 #[serde(rename = "number")]
30 NumberNode(NumberNode),
31
32 #[serde(rename = "integer")]
33 IntegerNode(IntegerNode),
34
35 #[serde(rename = "array")]
36 ArrayNode(ArrayNode),
37
38 #[serde(rename = "object")]
39 ObjectNode(ObjectNode),
40}
41
42#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
43pub struct InvalidNode {
44 #[serde(flatten)]
45 pub fields: HashMap<String, JsValue>,
46}
47
48impl_extra_props!(InvalidNode, fields);