feat: modules, products, services, services kits
This commit is contained in:
137
modules/fulfillment_base/routers/deal_product.py
Normal file
137
modules/fulfillment_base/routers/deal_product.py
Normal file
@ -0,0 +1,137 @@
|
||||
from fastapi import APIRouter, Path
|
||||
|
||||
from backend.dependecies import SessionDependency
|
||||
from modules.fulfillment_base.schemas.deal_product import *
|
||||
from modules.fulfillment_base.schemas.product_service import *
|
||||
from modules.fulfillment_base.services import DealProductService, ProductServiceService
|
||||
|
||||
router = APIRouter(tags=["deal-product"])
|
||||
|
||||
# region DealProduct
|
||||
|
||||
|
||||
@router.get(
|
||||
"/{dealId}",
|
||||
response_model=GetDealProductsResponse,
|
||||
operation_id="get_deal_products",
|
||||
)
|
||||
async def get_deal_products(
|
||||
session: SessionDependency,
|
||||
deal_id: int = Path(alias="dealId"),
|
||||
):
|
||||
return await DealProductService(session).get_all(deal_id)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/",
|
||||
response_model=CreateDealProductResponse,
|
||||
operation_id="create_deal_product",
|
||||
)
|
||||
async def create_deal_product(
|
||||
session: SessionDependency,
|
||||
request: CreateDealProductRequest,
|
||||
):
|
||||
return await DealProductService(session).create(request)
|
||||
|
||||
|
||||
@router.patch(
|
||||
"/{dealId}/product/{productId}",
|
||||
response_model=UpdateDealProductResponse,
|
||||
operation_id="update_deal_product",
|
||||
)
|
||||
async def update_deal_product(
|
||||
session: SessionDependency,
|
||||
request: UpdateDealProductRequest,
|
||||
deal_id: int = Path(alias="dealId"),
|
||||
product_id: int = Path(alias="productId"),
|
||||
):
|
||||
return await DealProductService(session).update(deal_id, product_id, request)
|
||||
|
||||
|
||||
@router.delete(
|
||||
"/{dealId}/product/{productId}",
|
||||
response_model=DeleteDealProductResponse,
|
||||
operation_id="delete_deal_product",
|
||||
)
|
||||
async def delete_deal_product(
|
||||
session: SessionDependency,
|
||||
deal_id: int = Path(alias="dealId"),
|
||||
product_id: int = Path(alias="productId"),
|
||||
):
|
||||
return await DealProductService(session).delete(deal_id, product_id)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/add-services-kit",
|
||||
response_model=DealProductAddKitResponse,
|
||||
operation_id="add_kit_to_deal_product",
|
||||
)
|
||||
async def add_kit_to_deal_product(
|
||||
session: SessionDependency,
|
||||
request: DealProductAddKitRequest,
|
||||
):
|
||||
return await DealProductService(session).add_services_kit(request)
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
|
||||
# region DealProductService
|
||||
|
||||
|
||||
@router.post(
|
||||
"/service",
|
||||
response_model=CreateProductServiceResponse,
|
||||
operation_id="create_deal_product_service",
|
||||
)
|
||||
async def create_deal_product_service(
|
||||
session: SessionDependency,
|
||||
request: CreateProductServiceRequest,
|
||||
):
|
||||
return await ProductServiceService(session).create(request)
|
||||
|
||||
|
||||
@router.patch(
|
||||
"/{dealId}/product/{productId}/service/{serviceId}",
|
||||
response_model=UpdateProductServiceResponse,
|
||||
operation_id="update_deal_product_service",
|
||||
)
|
||||
async def update_deal_product_service(
|
||||
session: SessionDependency,
|
||||
request: UpdateProductServiceRequest,
|
||||
deal_id: int = Path(alias="dealId"),
|
||||
product_id: int = Path(alias="productId"),
|
||||
service_id: int = Path(alias="serviceId"),
|
||||
):
|
||||
return await ProductServiceService(session).update(
|
||||
deal_id, product_id, service_id, request
|
||||
)
|
||||
|
||||
|
||||
@router.delete(
|
||||
"/{dealId}/product/{productId}/service/{serviceId}",
|
||||
response_model=DeleteProductServiceResponse,
|
||||
operation_id="delete_deal_product_service",
|
||||
)
|
||||
async def delete_deal_product_service(
|
||||
session: SessionDependency,
|
||||
deal_id: int = Path(alias="dealId"),
|
||||
product_id: int = Path(alias="productId"),
|
||||
service_id: int = Path(alias="serviceId"),
|
||||
):
|
||||
return await ProductServiceService(session).delete(deal_id, product_id, service_id)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/services/duplicate",
|
||||
response_model=ProductServicesDuplicateResponse,
|
||||
operation_id="duplicate_product_services",
|
||||
)
|
||||
async def copy_product_services(
|
||||
session: SessionDependency,
|
||||
request: ProductServicesDuplicateRequest,
|
||||
):
|
||||
return await ProductServiceService(session).duplicate_product_services(request)
|
||||
|
||||
|
||||
# endregion
|
||||
Reference in New Issue
Block a user