dpp/data_contract/methods/schema/
mod.rs1mod 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}