from fastapi import APIRouter, Path, Query from backend.dependecies import ( SessionDependency, PaginationDependency, SortingDependency, ) from schemas.deal import * from services import DealService deal_router = APIRouter( tags=["deal"], ) @deal_router.get( "/", response_model=GetDealsResponse, operation_id="get_deals", ) async def get_deals( session: SessionDependency, pagination: PaginationDependency, sorting: SortingDependency, project_id: Optional[int] = Query(alias="projectId", default=None), board_id: Optional[int] = Query(alias="boardId", default=None), status_id: Optional[int] = Query(alias="statusId", default=None), id: Optional[int] = Query(default=None), name: Optional[str] = Query(default=None), ): return await DealService(session).get_all( pagination, sorting, project_id, board_id, status_id, id, name, ) @deal_router.post( "/", response_model=CreateDealResponse, operation_id="create_deal", ) async def create_deal( session: SessionDependency, request: CreateDealRequest, ): return await DealService(session).create(request) @deal_router.patch( "/{pk}", response_model=UpdateDealResponse, operation_id="update_deal", ) async def update_deal( session: SessionDependency, request: UpdateDealRequest, pk: int = Path(), ): return await DealService(session).update(pk, request) @deal_router.delete( "/{pk}", response_model=DeleteDealResponse, operation_id="delete_deal", ) async def delete_deal( session: SessionDependency, pk: int = Path(), ): return await DealService(session).delete(pk)