dpp/data_contract/methods/validate_document/
mod.rs1use crate::data_contract::document_type::property_constraints::DocumentSystemValues;
2use crate::prelude::DataContract;
3use platform_value::Value;
4use platform_version::version::PlatformVersion;
5
6#[cfg(all(test, feature = "fixtures-and-mocks"))]
7mod duplicate_keys_tests;
8mod v0;
9mod v1;
10use crate::document::Document;
11use crate::validation::SimpleConsensusValidationResult;
12use crate::ProtocolError;
13pub use v0::*;
14
15impl DataContractDocumentValidationMethodsV0 for DataContract {
16 fn validate_document(
17 &self,
18 name: &str,
19 document: &Document,
20 platform_version: &PlatformVersion,
21 ) -> Result<SimpleConsensusValidationResult, ProtocolError> {
22 match platform_version
23 .dpp
24 .contract_versions
25 .methods
26 .validate_document
27 {
28 0 => self.validate_document_v0(name, document, platform_version),
29 1 => self.validate_document_v1(name, document, platform_version),
30 version => Err(ProtocolError::UnknownVersionMismatch {
31 method: "DataContract::validate_document".to_string(),
32 known_versions: vec![0, 1],
33 received: version,
34 }),
35 }
36 }
37
38 fn validate_document_properties(
39 &self,
40 name: &str,
41 properties: Value,
42 system: &DocumentSystemValues,
43 platform_version: &PlatformVersion,
44 ) -> Result<SimpleConsensusValidationResult, ProtocolError> {
45 match platform_version
46 .dpp
47 .contract_versions
48 .methods
49 .validate_document
50 {
51 0 => self.validate_document_properties_v0(name, properties, system, platform_version),
52 1 => self.validate_document_properties_v1(name, properties, system, platform_version),
53 version => Err(ProtocolError::UnknownVersionMismatch {
54 method: "DataContract::validate_document_properties".to_string(),
55 known_versions: vec![0, 1],
56 received: version,
57 }),
58 }
59 }
60}