sqlx_ledger/entry/
entity.rs

1use chrono::{DateTime, Utc};
2use derive_builder::Builder;
3use rust_decimal::Decimal;
4
5use crate::primitives::*;
6
7/// Representation of a ledger transaction entry entity.
8pub struct Entry {
9    pub id: EntryId,
10    pub version: u32,
11    pub transaction_id: TransactionId,
12    pub account_id: AccountId,
13    pub journal_id: JournalId,
14    pub entry_type: String,
15    pub layer: Layer,
16    pub units: Decimal,
17    pub currency: Currency,
18    pub direction: DebitOrCredit,
19    pub sequence: u32,
20    pub description: Option<String>,
21    pub created_at: DateTime<Utc>,
22    pub modified_at: DateTime<Utc>,
23}
24
25#[derive(Debug, Builder)]
26pub(crate) struct NewEntry {
27    pub(super) account_id: AccountId,
28    pub(super) entry_type: String,
29    pub(super) layer: Layer,
30    pub(super) units: Decimal,
31    pub(super) currency: Currency,
32    pub(super) direction: DebitOrCredit,
33    #[builder(setter(strip_option), default)]
34    pub(super) description: Option<String>,
35}
36
37impl NewEntry {
38    pub fn builder() -> NewEntryBuilder {
39        NewEntryBuilder::default()
40    }
41}