feat: service categories endpoints and service creation endpoint
This commit is contained in:
@ -4,3 +4,4 @@ from .deal_service import DealServiceRepository as DealServiceRepository
|
||||
from .product import ProductRepository as ProductRepository
|
||||
from .service import ServiceRepository as ServiceRepository
|
||||
from .services_kit import ServicesKitRepository as ServicesKitRepository
|
||||
from .service_category import ServiceCategoryRepository as ServiceCategoryRepository
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
from modules.fulfillment_base.models import Service
|
||||
from modules.fulfillment_base.models.service import ServicePriceRange
|
||||
from modules.fulfillment_base.schemas.service import (
|
||||
CreateServiceSchema,
|
||||
UpdateServiceSchema,
|
||||
@ -10,13 +11,34 @@ class ServiceRepository(
|
||||
BaseRepository,
|
||||
RepGetAllMixin[Service],
|
||||
RepDeleteMixin[Service],
|
||||
RepCreateMixin[Service, CreateServiceSchema],
|
||||
RepUpdateMixin[Service, UpdateServiceSchema],
|
||||
RepGetByIdMixin[Service],
|
||||
):
|
||||
entity_class = Service
|
||||
entity_not_found_msg = "Услуга не найдена"
|
||||
|
||||
async def create(self, data: CreateServiceSchema) -> int:
|
||||
price_ranges = []
|
||||
for range in data.price_ranges:
|
||||
price_ranges.append(
|
||||
ServicePriceRange(
|
||||
from_quantity=range.from_quantity,
|
||||
to_quantity=range.to_quantity,
|
||||
price=range.price,
|
||||
)
|
||||
)
|
||||
|
||||
data_dict = data.model_dump()
|
||||
data_dict["price_ranges"] = price_ranges
|
||||
data_dict["category_id"] = data.category.id
|
||||
del data_dict["category"]
|
||||
|
||||
service = Service(**data_dict)
|
||||
self.session.add(service)
|
||||
await self.session.commit()
|
||||
await self.session.refresh(service)
|
||||
return service.id
|
||||
|
||||
async def update(self, service: Service, data: UpdateServiceSchema) -> Service:
|
||||
return await self._apply_update_data_to_model(service, data, True)
|
||||
|
||||
|
||||
23
modules/fulfillment_base/repositories/service_category.py
Normal file
23
modules/fulfillment_base/repositories/service_category.py
Normal file
@ -0,0 +1,23 @@
|
||||
from modules.fulfillment_base.models import ServiceCategory
|
||||
from modules.fulfillment_base.schemas.service_category import (
|
||||
CreateServiceCategorySchema,
|
||||
UpdateServiceCategorySchema,
|
||||
)
|
||||
from repositories.mixins import *
|
||||
|
||||
|
||||
class ServiceCategoryRepository(
|
||||
BaseRepository,
|
||||
RepGetAllMixin[ServiceCategory],
|
||||
RepDeleteMixin[ServiceCategory],
|
||||
RepCreateMixin[ServiceCategory, CreateServiceCategorySchema],
|
||||
RepUpdateMixin[ServiceCategory, UpdateServiceCategorySchema],
|
||||
RepGetByIdMixin[ServiceCategory],
|
||||
):
|
||||
entity_class = ServiceCategory
|
||||
entity_not_found_msg = "Категория услуги не найдена"
|
||||
|
||||
async def update(
|
||||
self, service: ServiceCategory, data: UpdateServiceCategorySchema
|
||||
) -> ServiceCategory:
|
||||
return await self._apply_update_data_to_model(service, data, True)
|
||||
Reference in New Issue
Block a user