Skip to main content

backbone_banking/exports/
events.rs

1//! Public events for Banking module
2//!
3//! Generated by metaphor-schema. Do not edit manually.
4//!
5//! These events are published by this module for other modules to subscribe to.
6//! Events are the primary mechanism for cross-module communication.
7
8use serde::{Deserialize, Serialize};
9use chrono::{DateTime, Utc};
10
11use super::types::*;
12
13// ============================================================================
14// BANK EVENTS
15// ============================================================================
16
17/// Event published when a Bank is created
18#[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/// Event published when a Bank is updated
26#[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/// Event published when a Bank is deleted
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct BankDeletedEvent {
36    pub id: BankId,
37    pub occurred_at: DateTime<Utc>,
38}
39
40// ============================================================================
41// BANKACCOUNT EVENTS
42// ============================================================================
43
44/// Event published when a BankAccount is created
45#[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/// Event published when a BankAccount is updated
53#[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/// Event published when a BankAccount is deleted
61#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct BankAccountDeletedEvent {
63    pub id: BankAccountId,
64    pub occurred_at: DateTime<Utc>,
65}
66
67// ============================================================================
68// BANKCLEARANCE EVENTS
69// ============================================================================
70
71/// Event published when a BankClearance is created
72#[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/// Event published when a BankClearance is updated
80#[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/// Event published when a BankClearance is deleted
88#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct BankClearanceDeletedEvent {
90    pub id: BankClearanceId,
91    pub occurred_at: DateTime<Utc>,
92}
93
94// ============================================================================
95// BANKRECONCILIATION EVENTS
96// ============================================================================
97
98/// Event published when a BankReconciliation is created
99#[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/// Event published when a BankReconciliation is updated
107#[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/// Event published when a BankReconciliation is deleted
115#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct BankReconciliationDeletedEvent {
117    pub id: BankReconciliationId,
118    pub occurred_at: DateTime<Utc>,
119}
120
121// ============================================================================
122// BANKSTATEMENTIMPORT EVENTS
123// ============================================================================
124
125/// Event published when a BankStatementImport is created
126#[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/// Event published when a BankStatementImport is updated
134#[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/// Event published when a BankStatementImport is deleted
142#[derive(Debug, Clone, Serialize, Deserialize)]
143pub struct BankStatementImportDeletedEvent {
144    pub id: BankStatementImportId,
145    pub occurred_at: DateTime<Utc>,
146}
147
148// ============================================================================
149// BANKTRANSACTION EVENTS
150// ============================================================================
151
152/// Event published when a BankTransaction is created
153#[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/// Event published when a BankTransaction is updated
161#[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/// Event published when a BankTransaction is deleted
169#[derive(Debug, Clone, Serialize, Deserialize)]
170pub struct BankTransactionDeletedEvent {
171    pub id: BankTransactionId,
172    pub occurred_at: DateTime<Utc>,
173}
174
175// ============================================================================
176// FXGAINLOSS EVENTS
177// ============================================================================
178
179/// Event published when a FxGainLoss is created
180#[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/// Event published when a FxGainLoss is updated
188#[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/// Event published when a FxGainLoss is deleted
196#[derive(Debug, Clone, Serialize, Deserialize)]
197pub struct FxGainLossDeletedEvent {
198    pub id: FxGainLossId,
199    pub occurred_at: DateTime<Utc>,
200}
201
202// ============================================================================
203// RECONCILEPRESET EVENTS
204// ============================================================================
205
206/// Event published when a ReconcilePreset is created
207#[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/// Event published when a ReconcilePreset is updated
215#[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/// Event published when a ReconcilePreset is deleted
223#[derive(Debug, Clone, Serialize, Deserialize)]
224pub struct ReconcilePresetDeletedEvent {
225    pub id: ReconcilePresetId,
226    pub occurred_at: DateTime<Utc>,
227}
228
229// ============================================================================
230// MODULE EVENT ENUM
231// ============================================================================
232
233/// All events published by Banking module
234#[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/// Metadata for module events
264#[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// ============================================================================
280// CUSTOM EVENTS
281// ============================================================================
282
283// <<< CUSTOM EVENTS START >>>
284// Add custom public events here
285// <<< CUSTOM EVENTS END >>>