Skip to main content

edc_web_components/models/
contract_agreement_item.rs

1use edc_connector_client::types::contract_agreement::ContractAgreement;
2use edc_connector_client::types::policy::Policy;
3
4#[derive(Clone, Debug, PartialEq)]
5pub struct ContractAgreementItem {
6  pub id: String,
7  pub signing_date: String,
8  pub consumer_id: String,
9  pub provider_id: String,
10  pub asset_id: String,
11  pub policy: Policy,
12  pub policy_id: String,
13}
14
15impl From<ContractAgreement> for ContractAgreementItem {
16  fn from(contract_agreement: ContractAgreement) -> Self {
17    let id = contract_agreement.id().to_string();
18    let signing_date =
19      chrono::DateTime::from_timestamp(contract_agreement.contract_signing_date(), 0)
20        .unwrap_or_default()
21        .to_string();
22
23    let consumer_id = contract_agreement.consumer_id().to_string();
24    let provider_id = contract_agreement.provider_id().to_string();
25    let asset_id = contract_agreement.asset_id().to_string();
26    let policy_id = contract_agreement
27      .policy()
28      .id()
29      .map(|id| id.to_string())
30      .unwrap_or_default();
31
32    Self {
33      id,
34      signing_date,
35      consumer_id,
36      provider_id,
37      asset_id,
38      policy: contract_agreement.policy().clone(),
39      policy_id,
40    }
41  }
42}