feat: service categories endpoints and service creation endpoint

This commit is contained in:
2025-09-27 18:21:20 +04:00
parent 8cf589c54e
commit fbadddeada
10 changed files with 194 additions and 20 deletions

View File

@ -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

View File

@ -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)

View 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)