daml_grpc/data/event/
created.rs1use std::convert::TryFrom;
2
3use chrono::{DateTime, Utc};
4
5use crate::data::completion::DamlStatus;
6use crate::data::identifier::DamlIdentifier;
7use crate::data::offset::DamlLedgerOffset;
8use crate::data::value::{DamlRecord, DamlValue};
9use crate::data::{DamlError, DamlResult};
10use crate::grpc_protobuf::com::daml::ledger::api::v2::{CreatedEvent, InterfaceView};
11use crate::util;
12use crate::util::Required;
13
14#[derive(Debug, Eq, PartialEq, Clone)]
23pub struct DamlCreatedEvent {
24 pub offset: DamlLedgerOffset,
26 pub node_id: i32,
29 pub contract_id: String,
30 pub template_id: DamlIdentifier,
31 pub contract_key: Option<DamlValue>,
32 pub contract_key_hash: Vec<u8>,
35 pub create_arguments: DamlRecord,
36 pub created_event_blob: Vec<u8>,
39 pub interface_views: Vec<DamlInterfaceView>,
41 pub witness_parties: Vec<String>,
42 pub signatories: Vec<String>,
43 pub observers: Vec<String>,
44 pub created_at: DateTime<Utc>,
46 pub package_name: String,
48 pub acs_delta: bool,
51 pub representative_package_id: String,
57}
58
59impl TryFrom<CreatedEvent> for DamlCreatedEvent {
60 type Error = DamlError;
61
62 fn try_from(e: CreatedEvent) -> DamlResult<Self> {
63 Ok(Self {
64 offset: DamlLedgerOffset::new(e.offset),
65 node_id: e.node_id,
66 contract_id: e.contract_id,
67 template_id: DamlIdentifier::from(e.template_id.req()?),
68 contract_key: e.contract_key.map(DamlValue::try_from).transpose()?,
69 contract_key_hash: e.contract_key_hash,
70 create_arguments: DamlRecord::try_from(e.create_arguments.req()?)?,
71 created_event_blob: e.created_event_blob,
72 interface_views: e
73 .interface_views
74 .into_iter()
75 .map(DamlInterfaceView::try_from)
76 .collect::<DamlResult<_>>()?,
77 witness_parties: e.witness_parties,
78 signatories: e.signatories,
79 observers: e.observers,
80 created_at: util::from_grpc_timestamp(&e.created_at.req()?)?,
81 package_name: e.package_name,
82 acs_delta: e.acs_delta,
83 representative_package_id: e.representative_package_id,
84 })
85 }
86}
87
88#[derive(Debug, Eq, PartialEq, Clone)]
92pub struct DamlInterfaceView {
93 pub interface_id: DamlIdentifier,
94 pub view_status: DamlStatus,
98 pub view_value: Option<DamlRecord>,
100 pub implementation_package_id: String,
103}
104
105impl TryFrom<InterfaceView> for DamlInterfaceView {
106 type Error = DamlError;
107
108 fn try_from(v: InterfaceView) -> DamlResult<Self> {
109 Ok(Self {
110 interface_id: DamlIdentifier::from(v.interface_id.req()?),
111 view_status: DamlStatus::from(v.view_status.req()?),
112 view_value: v.view_value.map(DamlRecord::try_from).transpose()?,
113 implementation_package_id: v.implementation_package_id,
114 })
115 }
116}