Skip to main content

edc_web_components/models/
contract_negotiation_item.rs

1use super::{ContractNegotiationKind, ContractNegotiationState};
2use edc_connector_client::types::contract_negotiation::ContractNegotiation;
3
4#[derive(Clone, Debug, PartialEq)]
5pub struct ContractNegotiationItem {
6  pub id: String,
7  pub state: String,
8  pub contract_agreement_id: String,
9  pub counter_party_id: String,
10  pub asset_id: String,
11  pub counter_party_address: String,
12  pub protocol: String,
13  pub kind: String,
14}
15
16impl From<ContractNegotiation> for ContractNegotiationItem {
17  fn from(contract_negotiation: ContractNegotiation) -> Self {
18    let id = contract_negotiation.id().to_string();
19    let state = ContractNegotiationState::from(contract_negotiation.state()).to_string();
20
21    let contract_agreement_id = contract_negotiation
22      .contract_agreement_id()
23      .map(|contract_agreement_id| contract_agreement_id.to_string())
24      .unwrap_or_default();
25
26    let counter_party_id = contract_negotiation
27      .counter_party_id()
28      .clone()
29      .unwrap_or_default();
30
31    let asset_id = contract_negotiation.asset_id().clone().unwrap_or_default();
32
33    let counter_party_address = contract_negotiation.counter_party_address().to_string();
34    let protocol = contract_negotiation.protocol().to_string();
35    let kind = ContractNegotiationKind::from(contract_negotiation.kind()).to_string();
36
37    Self {
38      id,
39      state,
40      contract_agreement_id,
41      counter_party_id,
42      asset_id,
43      counter_party_address,
44      protocol,
45      kind,
46    }
47  }
48}