from sqlalchemy import and_, select from sqlalchemy.orm import aliased from ledger.schema import TransactionLedgerRead from transaction.models import Split, Transaction class LedgerResource: @classmethod def get_ledger(cls, session, account_id): split_account = aliased(Split) stmt = select(Transaction, split_account).join( split_account, and_(Transaction.id == split_account.transaction_id, split_account.account_id == account_id) ) return [TransactionLedgerRead(transaction=transaction, account_split=split) for transaction, split in session.exec(stmt).all()]