dpp/data_contract/conversion/value/
mod.rs1pub mod v0;
2
3use crate::data_contract::conversion::value::v0::DataContractValueConversionMethodsV0;
4use crate::data_contract::v0::DataContractV0;
5use crate::data_contract::v1::DataContractV1;
6use crate::data_contract::DataContract;
7use crate::version::PlatformVersion;
8use crate::ProtocolError;
9use platform_value::Value;
10
11impl DataContractValueConversionMethodsV0 for DataContract {
12 fn from_value(
13 raw_object: Value,
14 full_validation: bool,
15 platform_version: &PlatformVersion,
16 ) -> Result<Self, ProtocolError> {
17 match platform_version
18 .dpp
19 .contract_versions
20 .contract_structure_version
21 {
22 0 => Ok(
23 DataContractV0::from_value(raw_object, full_validation, platform_version)?.into(),
24 ),
25 1 => Ok(
26 DataContractV1::from_value(raw_object, full_validation, platform_version)?.into(),
27 ),
28 version => Err(ProtocolError::UnknownVersionMismatch {
29 method: "DataContract::from_value".to_string(),
30 known_versions: vec![0, 1],
31 received: version,
32 }),
33 }
34 }
35}