1use serde::{Deserialize, Serialize};
9use chrono::{DateTime, Utc};
10
11use super::types::*;
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct BankCreatedEvent {
20 pub id: BankId,
21 pub data: BankDto,
22 pub occurred_at: DateTime<Utc>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct BankUpdatedEvent {
28 pub id: BankId,
29 pub data: BankDto,
30 pub occurred_at: DateTime<Utc>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct BankDeletedEvent {
36 pub id: BankId,
37 pub occurred_at: DateTime<Utc>,
38}
39
40#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct BankAccountCreatedEvent {
47 pub id: BankAccountId,
48 pub data: BankAccountDto,
49 pub occurred_at: DateTime<Utc>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct BankAccountUpdatedEvent {
55 pub id: BankAccountId,
56 pub data: BankAccountDto,
57 pub occurred_at: DateTime<Utc>,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct BankAccountDeletedEvent {
63 pub id: BankAccountId,
64 pub occurred_at: DateTime<Utc>,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize)]
73pub struct BankClearanceCreatedEvent {
74 pub id: BankClearanceId,
75 pub data: BankClearanceDto,
76 pub occurred_at: DateTime<Utc>,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct BankClearanceUpdatedEvent {
82 pub id: BankClearanceId,
83 pub data: BankClearanceDto,
84 pub occurred_at: DateTime<Utc>,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct BankClearanceDeletedEvent {
90 pub id: BankClearanceId,
91 pub occurred_at: DateTime<Utc>,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct BankReconciliationCreatedEvent {
101 pub id: BankReconciliationId,
102 pub data: BankReconciliationDto,
103 pub occurred_at: DateTime<Utc>,
104}
105
106#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct BankReconciliationUpdatedEvent {
109 pub id: BankReconciliationId,
110 pub data: BankReconciliationDto,
111 pub occurred_at: DateTime<Utc>,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct BankReconciliationDeletedEvent {
117 pub id: BankReconciliationId,
118 pub occurred_at: DateTime<Utc>,
119}
120
121#[derive(Debug, Clone, Serialize, Deserialize)]
127pub struct BankStatementImportCreatedEvent {
128 pub id: BankStatementImportId,
129 pub data: BankStatementImportDto,
130 pub occurred_at: DateTime<Utc>,
131}
132
133#[derive(Debug, Clone, Serialize, Deserialize)]
135pub struct BankStatementImportUpdatedEvent {
136 pub id: BankStatementImportId,
137 pub data: BankStatementImportDto,
138 pub occurred_at: DateTime<Utc>,
139}
140
141#[derive(Debug, Clone, Serialize, Deserialize)]
143pub struct BankStatementImportDeletedEvent {
144 pub id: BankStatementImportId,
145 pub occurred_at: DateTime<Utc>,
146}
147
148#[derive(Debug, Clone, Serialize, Deserialize)]
154pub struct BankTransactionCreatedEvent {
155 pub id: BankTransactionId,
156 pub data: BankTransactionDto,
157 pub occurred_at: DateTime<Utc>,
158}
159
160#[derive(Debug, Clone, Serialize, Deserialize)]
162pub struct BankTransactionUpdatedEvent {
163 pub id: BankTransactionId,
164 pub data: BankTransactionDto,
165 pub occurred_at: DateTime<Utc>,
166}
167
168#[derive(Debug, Clone, Serialize, Deserialize)]
170pub struct BankTransactionDeletedEvent {
171 pub id: BankTransactionId,
172 pub occurred_at: DateTime<Utc>,
173}
174
175#[derive(Debug, Clone, Serialize, Deserialize)]
181pub struct FxGainLossCreatedEvent {
182 pub id: FxGainLossId,
183 pub data: FxGainLossDto,
184 pub occurred_at: DateTime<Utc>,
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize)]
189pub struct FxGainLossUpdatedEvent {
190 pub id: FxGainLossId,
191 pub data: FxGainLossDto,
192 pub occurred_at: DateTime<Utc>,
193}
194
195#[derive(Debug, Clone, Serialize, Deserialize)]
197pub struct FxGainLossDeletedEvent {
198 pub id: FxGainLossId,
199 pub occurred_at: DateTime<Utc>,
200}
201
202#[derive(Debug, Clone, Serialize, Deserialize)]
208pub struct ReconcilePresetCreatedEvent {
209 pub id: ReconcilePresetId,
210 pub data: ReconcilePresetDto,
211 pub occurred_at: DateTime<Utc>,
212}
213
214#[derive(Debug, Clone, Serialize, Deserialize)]
216pub struct ReconcilePresetUpdatedEvent {
217 pub id: ReconcilePresetId,
218 pub data: ReconcilePresetDto,
219 pub occurred_at: DateTime<Utc>,
220}
221
222#[derive(Debug, Clone, Serialize, Deserialize)]
224pub struct ReconcilePresetDeletedEvent {
225 pub id: ReconcilePresetId,
226 pub occurred_at: DateTime<Utc>,
227}
228
229#[derive(Debug, Clone, Serialize, Deserialize)]
235#[serde(tag = "type")]
236pub enum BankingEvent {
237 BankCreated(BankCreatedEvent),
238 BankUpdated(BankUpdatedEvent),
239 BankDeleted(BankDeletedEvent),
240 BankAccountCreated(BankAccountCreatedEvent),
241 BankAccountUpdated(BankAccountUpdatedEvent),
242 BankAccountDeleted(BankAccountDeletedEvent),
243 BankClearanceCreated(BankClearanceCreatedEvent),
244 BankClearanceUpdated(BankClearanceUpdatedEvent),
245 BankClearanceDeleted(BankClearanceDeletedEvent),
246 BankReconciliationCreated(BankReconciliationCreatedEvent),
247 BankReconciliationUpdated(BankReconciliationUpdatedEvent),
248 BankReconciliationDeleted(BankReconciliationDeletedEvent),
249 BankStatementImportCreated(BankStatementImportCreatedEvent),
250 BankStatementImportUpdated(BankStatementImportUpdatedEvent),
251 BankStatementImportDeleted(BankStatementImportDeletedEvent),
252 BankTransactionCreated(BankTransactionCreatedEvent),
253 BankTransactionUpdated(BankTransactionUpdatedEvent),
254 BankTransactionDeleted(BankTransactionDeletedEvent),
255 FxGainLossCreated(FxGainLossCreatedEvent),
256 FxGainLossUpdated(FxGainLossUpdatedEvent),
257 FxGainLossDeleted(FxGainLossDeletedEvent),
258 ReconcilePresetCreated(ReconcilePresetCreatedEvent),
259 ReconcilePresetUpdated(ReconcilePresetUpdatedEvent),
260 ReconcilePresetDeleted(ReconcilePresetDeletedEvent),
261}
262
263#[derive(Debug, Clone, Serialize, Deserialize)]
265pub struct BankingEventMetadata {
266 pub module: &'static str,
267 pub version: &'static str,
268}
269
270impl Default for BankingEventMetadata {
271 fn default() -> Self {
272 Self {
273 module: "banking",
274 version: "1.0",
275 }
276 }
277}
278
279