edc_web_components/models/
contract_definition_item.rs1use edc_connector_client::types::contract_definition::ContractDefinition;
2
3#[derive(Clone, Debug, PartialEq)]
4pub struct ContractDefinitionItem {
5 pub id: String,
6 pub name: String,
7 pub access_policy_id: String,
8 pub contract_policy_id: String,
9 pub asset_ids: Vec<String>,
10}
11
12impl From<ContractDefinition> for ContractDefinitionItem {
13 fn from(contract_definition: ContractDefinition) -> Self {
14 let id = contract_definition.id().to_string();
15 let name = contract_definition
16 .private_property("name")
17 .map(|name| name.unwrap_or_default())
18 .unwrap_or_default();
19 let access_policy_id = contract_definition.access_policy_id().to_string();
20 let contract_policy_id = contract_definition.contract_policy_id().to_string();
21 let asset_ids = contract_definition
22 .assets_selector()
23 .iter()
24 .map(|criterion| match &criterion.operand_right().0 {
25 serde_json::Value::String(s) => s.to_string(),
26 _ => String::from("Invalid asset id."),
27 })
28 .collect::<Vec<_>>();
29
30 Self {
31 id,
32 name,
33 access_policy_id,
34 contract_policy_id,
35 asset_ids,
36 }
37 }
38}