json_utils/schema/
schema_node.rs

1use 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);