Skip to main content

dpp/data_contract/methods/validate_document/
mod.rs

1use 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}