Moving ledger route conversion to resource
This commit is contained in:
@@ -3,16 +3,23 @@ from datetime import date
|
|||||||
from sqlalchemy import and_, select
|
from sqlalchemy import and_, select
|
||||||
from sqlalchemy.orm import aliased
|
from sqlalchemy.orm import aliased
|
||||||
|
|
||||||
|
from ledger.schema import TransactionLedgerRead
|
||||||
from transaction.models import Split, Transaction
|
from transaction.models import Split, Transaction
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class LedgerResource:
|
class LedgerResource:
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_ledger(cls, session, account_id):
|
def get_ledger(cls, session, account_id):
|
||||||
split_account = aliased(Split)
|
split_account = aliased(Split)
|
||||||
|
|
||||||
return session.exec(
|
stmt = select(Transaction, split_account).join(
|
||||||
select(Transaction, split_account).join(split_account, and_(
|
split_account,
|
||||||
split_account.account_id == account_id,
|
and_(Transaction.id == split_account.transaction_id, split_account.account_id == account_id)
|
||||||
Transaction.id == split_account.transaction_id
|
)
|
||||||
))).all()
|
|
||||||
|
result = []
|
||||||
|
for transaction, split in session.exec(stmt).all():
|
||||||
|
result.append(TransactionLedgerRead(transaction=transaction, account_split=split))
|
||||||
|
|
||||||
|
return result
|
||||||
|
|||||||
@@ -3,15 +3,13 @@ from uuid import UUID
|
|||||||
from fastapi import APIRouter, Depends
|
from fastapi import APIRouter, Depends
|
||||||
|
|
||||||
from db import SessionDep
|
from db import SessionDep
|
||||||
|
from ledger.resource import LedgerResource
|
||||||
from ledger.schema import TransactionLedgerRead
|
from ledger.schema import TransactionLedgerRead
|
||||||
from transaction.resource import TransactionResource
|
|
||||||
from user.manager import get_current_user
|
from user.manager import get_current_user
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@router.get("/{account_id}")
|
@router.get("/{account_id}")
|
||||||
def read_ledger(account_id: UUID, session: SessionDep, current_user=Depends(get_current_user)) -> list[TransactionLedgerRead]:
|
def read_ledger(account_id: UUID, session: SessionDep, current_user=Depends(get_current_user)) -> list[TransactionLedgerRead]:
|
||||||
response = []
|
return LedgerResource.get_ledger(session, account_id)
|
||||||
for transaction, split in TransactionResource.get_ledger(session, account_id):
|
|
||||||
response.append(TransactionLedgerRead(transaction=transaction, account_split=split))
|
|
||||||
return response
|
|
||||||
|
|||||||
Reference in New Issue
Block a user