diff --git a/api/app/ledger/resource.py b/api/app/ledger/resource.py index bf3a1d5..807aeba 100644 --- a/api/app/ledger/resource.py +++ b/api/app/ledger/resource.py @@ -3,16 +3,23 @@ from datetime import date 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) - return session.exec( - select(Transaction, split_account).join(split_account, and_( - split_account.account_id == account_id, - Transaction.id == split_account.transaction_id - ))).all() + stmt = select(Transaction, split_account).join( + split_account, + and_(Transaction.id == split_account.transaction_id, split_account.account_id == account_id) + ) + + result = [] + for transaction, split in session.exec(stmt).all(): + result.append(TransactionLedgerRead(transaction=transaction, account_split=split)) + + return result diff --git a/api/app/ledger/routes.py b/api/app/ledger/routes.py index 0135b2c..040ddb9 100644 --- a/api/app/ledger/routes.py +++ b/api/app/ledger/routes.py @@ -3,15 +3,13 @@ from uuid import UUID from fastapi import APIRouter, Depends from db import SessionDep +from ledger.resource import LedgerResource from ledger.schema import TransactionLedgerRead -from transaction.resource import TransactionResource + from user.manager import get_current_user router = APIRouter() @router.get("/{account_id}") def read_ledger(account_id: UUID, session: SessionDep, current_user=Depends(get_current_user)) -> list[TransactionLedgerRead]: - response = [] - for transaction, split in TransactionResource.get_ledger(session, account_id): - response.append(TransactionLedgerRead(transaction=transaction, account_split=split)) - return response + return LedgerResource.get_ledger(session, account_id)