rtm_core/models/
accounting_operation.rs

1use crate::models::{ClientId, TransactionId};
2
3use super::Transaction;
4
5/// Represents an accounting operation that can be applied to the accounting system.
6#[derive(Debug)]
7#[must_use]
8pub enum AccountingOperation {
9    Transaction { transaction: Transaction },
10    Dispute { client_id: ClientId, ref_id: TransactionId },
11    Resolve { client_id: ClientId, ref_id: TransactionId },
12    Chargeback { client_id: ClientId, ref_id: TransactionId },
13}
14
15impl AccountingOperation {
16    pub const fn client_id(&self) -> ClientId {
17        match self {
18            AccountingOperation::Transaction { transaction } => transaction.client_id(),
19            AccountingOperation::Dispute { client_id, .. }
20            | AccountingOperation::Resolve { client_id, .. }
21            | AccountingOperation::Chargeback { client_id, .. } => *client_id,
22        }
23    }
24}