dpp/validation/json_schema_validator/methods/compile/
mod.rs1use 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}