from typing import Annotated from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession import utils.dependecies from backend.session import get_session from schemas.base import PaginationSchema from schemas.product import * from services.product import ProductService product_router = APIRouter( prefix="/product", tags=["product"] ) @product_router.post( '/create', response_model=ProductCreateResponse, operation_id='create_product' ) async def create_product( request: ProductCreateRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await ProductService(session).create(request) @product_router.post( '/delete', response_model=ProductDeleteResponse, operation_id='delete_product' ) async def delete_product( request: ProductDeleteRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await ProductService(session).delete(request) @product_router.post( '/update', response_model=ProductUpdateResponse, operation_id='update_product' ) async def delete_product( request: ProductUpdateRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await ProductService(session).update(request) @product_router.get( '/get', response_model=ProductGetResponse, operation_id='get_products_by_client_id' ) async def get_product( client_id: int, pagination: Annotated[PaginationSchema, Depends(utils.dependecies.pagination_parameters)], session: Annotated[AsyncSession, Depends(get_session)] ): return await ProductService(session).get_by_client_id(client_id, pagination)