use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankCreatedEvent {
pub id: BankId,
pub data: BankDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankUpdatedEvent {
pub id: BankId,
pub data: BankDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankDeletedEvent {
pub id: BankId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankAccountCreatedEvent {
pub id: BankAccountId,
pub data: BankAccountDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankAccountUpdatedEvent {
pub id: BankAccountId,
pub data: BankAccountDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankAccountDeletedEvent {
pub id: BankAccountId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankClearanceCreatedEvent {
pub id: BankClearanceId,
pub data: BankClearanceDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankClearanceUpdatedEvent {
pub id: BankClearanceId,
pub data: BankClearanceDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankClearanceDeletedEvent {
pub id: BankClearanceId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankReconciliationCreatedEvent {
pub id: BankReconciliationId,
pub data: BankReconciliationDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankReconciliationUpdatedEvent {
pub id: BankReconciliationId,
pub data: BankReconciliationDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankReconciliationDeletedEvent {
pub id: BankReconciliationId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankStatementImportCreatedEvent {
pub id: BankStatementImportId,
pub data: BankStatementImportDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankStatementImportUpdatedEvent {
pub id: BankStatementImportId,
pub data: BankStatementImportDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankStatementImportDeletedEvent {
pub id: BankStatementImportId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankTransactionCreatedEvent {
pub id: BankTransactionId,
pub data: BankTransactionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankTransactionUpdatedEvent {
pub id: BankTransactionId,
pub data: BankTransactionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankTransactionDeletedEvent {
pub id: BankTransactionId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FxGainLossCreatedEvent {
pub id: FxGainLossId,
pub data: FxGainLossDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FxGainLossUpdatedEvent {
pub id: FxGainLossId,
pub data: FxGainLossDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FxGainLossDeletedEvent {
pub id: FxGainLossId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconcilePresetCreatedEvent {
pub id: ReconcilePresetId,
pub data: ReconcilePresetDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconcilePresetUpdatedEvent {
pub id: ReconcilePresetId,
pub data: ReconcilePresetDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconcilePresetDeletedEvent {
pub id: ReconcilePresetId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum BankingEvent {
BankCreated(BankCreatedEvent),
BankUpdated(BankUpdatedEvent),
BankDeleted(BankDeletedEvent),
BankAccountCreated(BankAccountCreatedEvent),
BankAccountUpdated(BankAccountUpdatedEvent),
BankAccountDeleted(BankAccountDeletedEvent),
BankClearanceCreated(BankClearanceCreatedEvent),
BankClearanceUpdated(BankClearanceUpdatedEvent),
BankClearanceDeleted(BankClearanceDeletedEvent),
BankReconciliationCreated(BankReconciliationCreatedEvent),
BankReconciliationUpdated(BankReconciliationUpdatedEvent),
BankReconciliationDeleted(BankReconciliationDeletedEvent),
BankStatementImportCreated(BankStatementImportCreatedEvent),
BankStatementImportUpdated(BankStatementImportUpdatedEvent),
BankStatementImportDeleted(BankStatementImportDeletedEvent),
BankTransactionCreated(BankTransactionCreatedEvent),
BankTransactionUpdated(BankTransactionUpdatedEvent),
BankTransactionDeleted(BankTransactionDeletedEvent),
FxGainLossCreated(FxGainLossCreatedEvent),
FxGainLossUpdated(FxGainLossUpdatedEvent),
FxGainLossDeleted(FxGainLossDeletedEvent),
ReconcilePresetCreated(ReconcilePresetCreatedEvent),
ReconcilePresetUpdated(ReconcilePresetUpdatedEvent),
ReconcilePresetDeleted(ReconcilePresetDeletedEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankingEventMetadata {
pub module: &'static str,
pub version: &'static str,
}
impl Default for BankingEventMetadata {
fn default() -> Self {
Self {
module: "banking",
version: "1.0",
}
}
}