Skip to main content

edc_web_components/models/
contract_definition_item.rs

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