Skip to main content

dpp/data_contract/conversion/value/
mod.rs

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