Moving ledger route conversion to resource

This commit is contained in:
2025-02-16 23:13:56 +01:00
parent a83711315f
commit ab4ee7492f
2 changed files with 15 additions and 10 deletions

View File

@@ -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

View File

@@ -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)