dpp/data_contract/methods/schema/
mod.rs

1mod v0;
2pub use v0::*;
3
4use crate::data_contract::{DefinitionName, DocumentName};
5use crate::prelude::DataContract;
6use crate::validation::operations::ProtocolValidationOperation;
7use crate::ProtocolError;
8use platform_value::Value;
9use platform_version::version::PlatformVersion;
10use std::collections::BTreeMap;
11
12impl DataContractSchemaMethodsV0 for DataContract {
13    fn set_document_schemas(
14        &mut self,
15        schemas: BTreeMap<DocumentName, Value>,
16        defs: Option<BTreeMap<DefinitionName, Value>>,
17        full_validation: bool,
18        validation_operations: &mut Vec<ProtocolValidationOperation>,
19        platform_version: &PlatformVersion,
20    ) -> Result<(), ProtocolError> {
21        match self {
22            DataContract::V0(v0) => v0.set_document_schemas(
23                schemas,
24                defs,
25                full_validation,
26                validation_operations,
27                platform_version,
28            ),
29            DataContract::V1(v1) => v1.set_document_schemas(
30                schemas,
31                defs,
32                full_validation,
33                validation_operations,
34                platform_version,
35            ),
36        }
37    }
38
39    fn set_document_schema(
40        &mut self,
41        name: &str,
42        schema: Value,
43        full_validation: bool,
44        validation_operations: &mut Vec<ProtocolValidationOperation>,
45        platform_version: &PlatformVersion,
46    ) -> Result<(), ProtocolError> {
47        match self {
48            DataContract::V0(v0) => v0.set_document_schema(
49                name,
50                schema,
51                full_validation,
52                validation_operations,
53                platform_version,
54            ),
55            DataContract::V1(v1) => v1.set_document_schema(
56                name,
57                schema,
58                full_validation,
59                validation_operations,
60                platform_version,
61            ),
62        }
63    }
64
65    fn document_schemas(&self) -> BTreeMap<DocumentName, &Value> {
66        match self {
67            DataContract::V0(v0) => v0.document_schemas(),
68            DataContract::V1(v1) => v1.document_schemas(),
69        }
70    }
71
72    fn schema_defs(&self) -> Option<&BTreeMap<DefinitionName, Value>> {
73        match self {
74            DataContract::V0(v0) => v0.schema_defs(),
75            DataContract::V1(v1) => v1.schema_defs(),
76        }
77    }
78
79    fn set_schema_defs(
80        &mut self,
81        defs: Option<BTreeMap<DefinitionName, Value>>,
82        full_validation: bool,
83        validation_operations: &mut Vec<ProtocolValidationOperation>,
84        platform_version: &PlatformVersion,
85    ) -> Result<(), ProtocolError> {
86        match self {
87            DataContract::V0(v0) => v0.set_schema_defs(
88                defs,
89                full_validation,
90                validation_operations,
91                platform_version,
92            ),
93            DataContract::V1(v1) => v1.set_schema_defs(
94                defs,
95                full_validation,
96                validation_operations,
97                platform_version,
98            ),
99        }
100    }
101}