dpp/validation/json_schema_validator/methods/compile/
mod.rs

1use crate::data_contract::JsonValue;
2use crate::validation::{JsonSchemaValidator, SimpleConsensusValidationResult};
3use crate::ProtocolError;
4use platform_version::version::PlatformVersion;
5
6mod v0;
7
8impl JsonSchemaValidator {
9    pub fn compile(
10        &self,
11        json_schema: &JsonValue,
12        platform_version: &PlatformVersion,
13    ) -> Result<bool, ProtocolError> {
14        match platform_version
15            .dpp
16            .validation
17            .json_schema_validator
18            .compile
19        {
20            0 => self.compile_v0(json_schema),
21            version => Err(ProtocolError::UnknownVersionMismatch {
22                method: "JsonSchemaLazyValidator.compile".to_string(),
23                known_versions: vec![0],
24                received: version,
25            }),
26        }
27    }
28
29    pub fn compile_and_validate(
30        &self,
31        json_schema: &JsonValue,
32        json_value: &JsonValue,
33        platform_version: &PlatformVersion,
34    ) -> Result<SimpleConsensusValidationResult, ProtocolError> {
35        match platform_version
36            .dpp
37            .validation
38            .json_schema_validator
39            .compile_and_validate
40        {
41            0 => self.compile_and_validate_v0(json_schema, json_value),
42            version => Err(ProtocolError::UnknownVersionMismatch {
43                method: "JsonSchemaLazyValidator.compile_and_validate".to_string(),
44                known_versions: vec![0],
45                received: version,
46            }),
47        }
48    }
49
50    pub fn is_compiled(&self, platform_version: &PlatformVersion) -> Result<bool, ProtocolError> {
51        match platform_version
52            .dpp
53            .validation
54            .json_schema_validator
55            .compile
56        {
57            0 => Ok(self.is_compiled_v0()),
58            version => Err(ProtocolError::UnknownVersionMismatch {
59                method: "JsonSchemaLazyValidator.is_compiled".to_string(),
60                known_versions: vec![0],
61                received: version,
62            }),
63        }
64    }
65}