diff --git a/modules/fulfillment_base/repositories/service.py b/modules/fulfillment_base/repositories/service.py index fe4e542..690eea9 100644 --- a/modules/fulfillment_base/repositories/service.py +++ b/modules/fulfillment_base/repositories/service.py @@ -43,6 +43,7 @@ class ServiceRepository( 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) @@ -59,12 +60,15 @@ class ServiceRepository( await self.session.commit() async def update(self, service: Service, data: UpdateServiceSchema) -> Service: - await self._delete_price_ranges_by_service_id(service.id) - price_ranges = self._price_ranges_schemas_to_models(data.price_ranges) - for price_range in price_ranges: - service.price_ranges.append(price_range) + if data.price_ranges is not None: + await self._delete_price_ranges_by_service_id(service.id) + price_ranges = self._price_ranges_schemas_to_models(data.price_ranges) + for price_range in price_ranges: + service.price_ranges.append(price_range) del data.price_ranges - del data.category + if data.category is not None: + data.category_id = data.category.id + del data.category return await self._apply_update_data_to_model(service, data, True) diff --git a/modules/fulfillment_base/repositories/service_category.py b/modules/fulfillment_base/repositories/service_category.py index c8eccfa..0a9c02f 100644 --- a/modules/fulfillment_base/repositories/service_category.py +++ b/modules/fulfillment_base/repositories/service_category.py @@ -7,12 +7,7 @@ from repositories.mixins import * class ServiceCategoryRepository( - BaseRepository, - RepGetAllMixin[ServiceCategory], - RepDeleteMixin[ServiceCategory], - RepCreateMixin[ServiceCategory, CreateServiceCategorySchema], - RepUpdateMixin[ServiceCategory, UpdateServiceCategorySchema], - RepGetByIdMixin[ServiceCategory], + RepCrudMixin[ServiceCategory, CreateServiceCategorySchema, UpdateServiceCategorySchema] ): entity_class = ServiceCategory entity_not_found_msg = "Категория услуги не найдена" diff --git a/modules/fulfillment_base/schemas/service.py b/modules/fulfillment_base/schemas/service.py index ea2e882..cefd098 100644 --- a/modules/fulfillment_base/schemas/service.py +++ b/modules/fulfillment_base/schemas/service.py @@ -1,7 +1,5 @@ from typing import Optional -from pydantic import field_validator - from modules.fulfillment_base.schemas.service_category import ServiceCategorySchema from schemas.base import BaseSchema, BaseResponse @@ -26,20 +24,20 @@ class CreateServiceSchema(BaseSchema): cost: Optional[float] lexorank: str - @field_validator("category_id", mode="before") - @classmethod - def set_category_id(cls, v, info): - if v is None and "category" in info.data: - return info.data["category"].id - return v - class ServiceSchema(CreateServiceSchema): id: int -class UpdateServiceSchema(ServiceSchema): - pass +class UpdateServiceSchema(BaseSchema): + name: Optional[str] = None + category: Optional[ServiceCategorySchema] = None + category_id: Optional[int] = None + price: Optional[float] = None + service_type: Optional[int] = None + price_ranges: Optional[list[ServicePriceRangeSchema]] = None + cost: Optional[float] = None + lexorank: Optional[str] = None # endregion diff --git a/modules/fulfillment_base/schemas/service_category.py b/modules/fulfillment_base/schemas/service_category.py index 0c4ad2a..25eaa84 100644 --- a/modules/fulfillment_base/schemas/service_category.py +++ b/modules/fulfillment_base/schemas/service_category.py @@ -1,3 +1,5 @@ +from typing import Optional + from schemas.base import BaseSchema, BaseResponse @@ -14,8 +16,10 @@ class ServiceCategorySchema(CreateServiceCategorySchema): id: int -class UpdateServiceCategorySchema(ServiceCategorySchema): - pass +class UpdateServiceCategorySchema(BaseSchema): + name: Optional[str] = None + deal_service_rank: Optional[str] = None + product_service_rank: Optional[str] = None # endregion