from fastapi import APIRouter, Depends from backend.dependecies import SessionDependency, CurrentUserDependency, PaginationDependency from schemas.transaction import * from services.auth import authorized_user from services.transaction import TransactionsService transaction_router = APIRouter( prefix="/transaction", tags=["transaction"], dependencies=[Depends(authorized_user)] ) # region Expenses @transaction_router.post( '/get-all', operation_id='get_all_transactions', response_model=GetAllTransactionsResponse, ) async def get_all( session: SessionDependency, pagination: PaginationDependency, request: GetAllTransactionsRequest, ): return await TransactionsService(session).get_all(pagination, request) @transaction_router.post( '/update', operation_id='update_transaction', response_model=UpdateTransactionResponse, ) async def update_transaction( session: SessionDependency, request: UpdateTransactionRequest, user: CurrentUserDependency, ): return await TransactionsService(session).update_transaction(user, request) @transaction_router.delete( '/delete/{transaction_id}', operation_id='delete_transaction', response_model=DeleteTransactionResponse, ) async def delete_transaction( session: SessionDependency, transaction_id: int, ): return await TransactionsService(session).delete_transaction(transaction_id) # endregion # region Expense tags @transaction_router.get( '/get-all-tags', operation_id='get_all_transaction_tags', response_model=GetAllTransactionTagsResponse, ) async def get_all_transaction_tags( session: SessionDependency, ): return await TransactionsService(session).get_all_tags() @transaction_router.get( '/get-tags/{is_income}', operation_id='get_transaction_tags', response_model=GetTransactionTagsResponse, ) async def get_transaction_tags( session: SessionDependency, is_income: bool, ): return await TransactionsService(session).get_tags(is_income) @transaction_router.post( '/create-tag', operation_id='create_transaction_tag', response_model=UpdateTransactionTagResponse, ) async def create_transaction_tag( session: SessionDependency, request: CreateTransactionTagRequest, ): return await TransactionsService(session).create_tag(request) @transaction_router.post( '/update-tag', operation_id='update_transaction_tag', response_model=UpdateTransactionTagResponse, ) async def update_transaction_tag( session: SessionDependency, request: UpdateTransactionTagRequest, ): return await TransactionsService(session).update_tag(request) @transaction_router.delete( '/delete-tag/{tag_id}', operation_id='delete_transaction_tag', response_model=DeleteTransactionTagResponse, ) async def update_transaction_tag( session: SessionDependency, tag_id: int, ): return await TransactionsService(session).delete_tag(tag_id) # endregion