backbone_integrations/exports/
types.rs1use serde::{Deserialize, Serialize};
9use uuid::Uuid;
10use chrono::{DateTime, Utc};
11use crate::domain::entity::*;
12
13#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
21pub struct IntegrationConnectorId(pub Uuid);
22
23impl IntegrationConnectorId {
24 pub fn new(id: Uuid) -> Self {
25 Self(id)
26 }
27
28 pub fn into_inner(self) -> Uuid {
29 self.0
30 }
31}
32
33impl From<Uuid> for IntegrationConnectorId {
34 fn from(id: Uuid) -> Self {
35 Self(id)
36 }
37}
38
39impl From<IntegrationConnectorId> for Uuid {
40 fn from(id: IntegrationConnectorId) -> Self {
41 id.0
42 }
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct IntegrationConnectorDto {
50 pub id: IntegrationConnectorId,
51 pub provider: String,
52 pub kind: ConnectorKind,
53 pub direction: ConnectorDirection,
54 pub status: ConnectorStatus,
55 pub metadata: serde_json::Value,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct IntegrationConnectorSummary {
61 pub id: IntegrationConnectorId,
62 pub status: ConnectorStatus,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
67pub struct IntegrationConnectorRef {
68 pub id: IntegrationConnectorId,
69}
70
71#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
79pub struct IntegrationAccountId(pub Uuid);
80
81impl IntegrationAccountId {
82 pub fn new(id: Uuid) -> Self {
83 Self(id)
84 }
85
86 pub fn into_inner(self) -> Uuid {
87 self.0
88 }
89}
90
91impl From<Uuid> for IntegrationAccountId {
92 fn from(id: Uuid) -> Self {
93 Self(id)
94 }
95}
96
97impl From<IntegrationAccountId> for Uuid {
98 fn from(id: IntegrationAccountId) -> Self {
99 id.0
100 }
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
107pub struct IntegrationAccountDto {
108 pub id: IntegrationAccountId,
109 pub provider: OAuthProvider,
110 pub account_ref: String,
111 pub status: IntegrationAccountStatus,
112 pub scopes: String,
113 pub pkce_verifier: Option<String>,
114 pub expires_at: Option<DateTime<Utc>>,
115 pub last_refreshed_at: Option<DateTime<Utc>>,
116 pub metadata: serde_json::Value,
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize)]
121pub struct IntegrationAccountSummary {
122 pub id: IntegrationAccountId,
123 pub status: IntegrationAccountStatus,
124}
125
126#[derive(Debug, Clone, Serialize, Deserialize)]
128pub struct IntegrationAccountRef {
129 pub id: IntegrationAccountId,
130}
131
132#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
140pub struct IntegrationEventId(pub Uuid);
141
142impl IntegrationEventId {
143 pub fn new(id: Uuid) -> Self {
144 Self(id)
145 }
146
147 pub fn into_inner(self) -> Uuid {
148 self.0
149 }
150}
151
152impl From<Uuid> for IntegrationEventId {
153 fn from(id: Uuid) -> Self {
154 Self(id)
155 }
156}
157
158impl From<IntegrationEventId> for Uuid {
159 fn from(id: IntegrationEventId) -> Self {
160 id.0
161 }
162}
163
164#[derive(Debug, Clone, Serialize, Deserialize)]
168pub struct IntegrationEventDto {
169 pub id: IntegrationEventId,
170 pub connector_id: Uuid,
171 pub event_type: String,
172 pub external_id: String,
173 pub business_key: String,
174 pub status: IntegrationStatus,
175 pub payload: String,
176 pub mapped_ref_type: Option<String>,
177 pub mapped_ref_id: Option<Uuid>,
178 pub error_detail: Option<String>,
179 pub metadata: serde_json::Value,
180}
181
182#[derive(Debug, Clone, Serialize, Deserialize)]
184pub struct IntegrationEventSummary {
185 pub id: IntegrationEventId,
186 pub status: IntegrationStatus,
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize)]
191pub struct IntegrationEventRef {
192 pub id: IntegrationEventId,
193}
194
195