from fastapi import APIRouter, Depends from backend.dependecies import SessionDependency, CurrentUserDependency, PaginationDependency from schemas.expense import * from services.auth import authorized_user from services.expenses import ExpensesService expense_router = APIRouter( prefix="/expense", tags=["expense"], dependencies=[Depends(authorized_user)] ) # region Expenses @expense_router.get( '/get-all', operation_id='get_all_expenses', response_model=GetAllExpensesResponse, ) async def get_all( session: SessionDependency, pagination: PaginationDependency, ): return await ExpensesService(session).get_all(pagination) @expense_router.post( '/update', operation_id='update_expense', response_model=UpdateExpenseResponse, ) async def update_expense( session: SessionDependency, request: UpdateExpenseRequest, user: CurrentUserDependency, ): return await ExpensesService(session).update_expense(user, request) @expense_router.delete( '/delete/{expense_id}', operation_id='delete_expense', response_model=DeleteExpenseResponse, ) async def delete_expense( session: SessionDependency, expense_id: int, ): return await ExpensesService(session).delete_expense(expense_id) # endregion # region Expense tags @expense_router.get( '/get-all-tags', operation_id='get_all_expense_tags', response_model=GetAllExpenseTagsResponse, ) async def get_all( session: SessionDependency, ): return await ExpensesService(session).get_all_tags() @expense_router.post( '/create-tag', operation_id='create_expense_tag', response_model=UpdateExpenseTagResponse, ) async def update_expense( session: SessionDependency, request: CreateExpenseTagRequest, ): return await ExpensesService(session).create_tag(request) @expense_router.post( '/update-tag', operation_id='update_expense_tag', response_model=UpdateExpenseTagResponse, ) async def update_expense( session: SessionDependency, request: UpdateExpenseTagRequest, ): return await ExpensesService(session).update_tag(request) @expense_router.delete( '/delete-tag/{tag_id}', operation_id='delete_expense_tag', response_model=DeleteExpenseTagResponse, ) async def update_expense( session: SessionDependency, tag_id: int, ): return await ExpensesService(session).delete_tag(tag_id) # endregion