backbone-banking 0.7.1

Cash & bank — bank/account master, statement import, reconciliation, and clearing postings (5th GL producer)
Documentation
//! Public events for Banking module
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! These events are published by this module for other modules to subscribe to.
//! Events are the primary mechanism for cross-module communication.

use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};

use super::types::*;

// ============================================================================
// BANK EVENTS
// ============================================================================

/// Event published when a Bank is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankCreatedEvent {
    pub id: BankId,
    pub data: BankDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Bank is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankUpdatedEvent {
    pub id: BankId,
    pub data: BankDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a Bank is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankDeletedEvent {
    pub id: BankId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// BANKACCOUNT EVENTS
// ============================================================================

/// Event published when a BankAccount is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankAccountCreatedEvent {
    pub id: BankAccountId,
    pub data: BankAccountDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankAccount is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankAccountUpdatedEvent {
    pub id: BankAccountId,
    pub data: BankAccountDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankAccount is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankAccountDeletedEvent {
    pub id: BankAccountId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// BANKCLEARANCE EVENTS
// ============================================================================

/// Event published when a BankClearance is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankClearanceCreatedEvent {
    pub id: BankClearanceId,
    pub data: BankClearanceDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankClearance is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankClearanceUpdatedEvent {
    pub id: BankClearanceId,
    pub data: BankClearanceDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankClearance is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankClearanceDeletedEvent {
    pub id: BankClearanceId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// BANKRECONCILIATION EVENTS
// ============================================================================

/// Event published when a BankReconciliation is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankReconciliationCreatedEvent {
    pub id: BankReconciliationId,
    pub data: BankReconciliationDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankReconciliation is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankReconciliationUpdatedEvent {
    pub id: BankReconciliationId,
    pub data: BankReconciliationDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankReconciliation is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankReconciliationDeletedEvent {
    pub id: BankReconciliationId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// BANKSTATEMENTIMPORT EVENTS
// ============================================================================

/// Event published when a BankStatementImport is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankStatementImportCreatedEvent {
    pub id: BankStatementImportId,
    pub data: BankStatementImportDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankStatementImport is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankStatementImportUpdatedEvent {
    pub id: BankStatementImportId,
    pub data: BankStatementImportDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankStatementImport is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankStatementImportDeletedEvent {
    pub id: BankStatementImportId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// BANKTRANSACTION EVENTS
// ============================================================================

/// Event published when a BankTransaction is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankTransactionCreatedEvent {
    pub id: BankTransactionId,
    pub data: BankTransactionDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankTransaction is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankTransactionUpdatedEvent {
    pub id: BankTransactionId,
    pub data: BankTransactionDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a BankTransaction is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BankTransactionDeletedEvent {
    pub id: BankTransactionId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// FXGAINLOSS EVENTS
// ============================================================================

/// Event published when a FxGainLoss is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FxGainLossCreatedEvent {
    pub id: FxGainLossId,
    pub data: FxGainLossDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a FxGainLoss is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FxGainLossUpdatedEvent {
    pub id: FxGainLossId,
    pub data: FxGainLossDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a FxGainLoss is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FxGainLossDeletedEvent {
    pub id: FxGainLossId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// RECONCILEPRESET EVENTS
// ============================================================================

/// Event published when a ReconcilePreset is created
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconcilePresetCreatedEvent {
    pub id: ReconcilePresetId,
    pub data: ReconcilePresetDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a ReconcilePreset is updated
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconcilePresetUpdatedEvent {
    pub id: ReconcilePresetId,
    pub data: ReconcilePresetDto,
    pub occurred_at: DateTime<Utc>,
}

/// Event published when a ReconcilePreset is deleted
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReconcilePresetDeletedEvent {
    pub id: ReconcilePresetId,
    pub occurred_at: DateTime<Utc>,
}

// ============================================================================
// MODULE EVENT ENUM
// ============================================================================

/// All events published by Banking module
#[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),
}

/// Metadata for module events
#[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",
        }
    }
}

// ============================================================================
// CUSTOM EVENTS
// ============================================================================

// <<< CUSTOM EVENTS START >>>
// Add custom public events here
// <<< CUSTOM EVENTS END >>>