from fastapi import APIRouter, Path, Query from backend.dependecies import SessionDependency, PaginationDependency from modules.fulfillment_base.schemas.product import * from modules.fulfillment_base.services import ProductService router = APIRouter(tags=["product"]) @router.get( "/", response_model=GetProductsResponse, operation_id="get_products", ) async def get_products( session: SessionDependency, pagination: PaginationDependency, client_id: Optional[int] = Query(alias="clientId", default=None), search_input: Optional[str] = Query(alias="searchInput", default=None), ): return await ProductService(session).get_all(pagination, client_id, search_input) @router.post( "/", response_model=CreateProductResponse, operation_id="create_product", ) async def create_product( session: SessionDependency, request: CreateProductRequest, ): return await ProductService(session).create(request) @router.patch( "/{pk}", response_model=UpdateProductResponse, operation_id="update_product", ) async def update_product( session: SessionDependency, request: UpdateProductRequest, pk: int = Path(), ): return await ProductService(session).update(pk, request) @router.delete( "/{pk}", response_model=DeleteProductResponse, operation_id="delete_product", ) async def delete_product( session: SessionDependency, pk: int = Path(), ): return await ProductService(session).delete(pk)