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_object".to_string(),
30 known_versions: vec![0, 1],
31 received: version,
32 }),
33 }
34 }
35
36 fn to_value(&self, platform_version: &PlatformVersion) -> Result<Value, ProtocolError> {
37 match self {
38 DataContract::V0(v0) => v0.to_value(platform_version),
39 DataContract::V1(v1) => v1.to_value(platform_version),
40 }
41 }
42
43 fn into_value(self, platform_version: &PlatformVersion) -> Result<Value, ProtocolError> {
44 match self {
45 DataContract::V0(v0) => v0.into_value(platform_version),
46 DataContract::V1(v1) => v1.into_value(platform_version),
47 }
48 }
49}