cala-ledger 0.16.2

An embeddable double sided accounting ledger built on PG/SQLx
Documentation
use serde::{Deserialize, Serialize};

use cala_types::primitives::{AccountId, Currency};

use super::{AccountBalance, BalanceRange};

#[derive(Debug, Serialize, Deserialize)]
pub struct AccountBalanceByCurrencyCursor {
    pub currency: Currency,
}

impl From<&AccountBalance> for AccountBalanceByCurrencyCursor {
    fn from(balance: &AccountBalance) -> Self {
        Self {
            currency: balance.details.currency,
        }
    }
}

impl From<&BalanceRange> for AccountBalanceByCurrencyCursor {
    fn from(range: &BalanceRange) -> Self {
        Self {
            currency: range.close.details.currency,
        }
    }
}

#[derive(Debug, Serialize, Deserialize)]
pub struct AccountBalanceCursor {
    pub account_id: AccountId,
    pub currency: Currency,
}

impl From<&AccountBalance> for AccountBalanceCursor {
    fn from(balance: &AccountBalance) -> Self {
        Self {
            account_id: balance.details.account_id,
            currency: balance.details.currency,
        }
    }
}

impl From<&BalanceRange> for AccountBalanceCursor {
    fn from(range: &BalanceRange) -> Self {
        Self {
            account_id: range.close.details.account_id,
            currency: range.close.details.currency,
        }
    }
}