fix: service schemas fixed
This commit is contained in:
@ -43,6 +43,7 @@ class ServiceRepository(
|
|||||||
|
|
||||||
data_dict = data.model_dump()
|
data_dict = data.model_dump()
|
||||||
data_dict["price_ranges"] = price_ranges
|
data_dict["price_ranges"] = price_ranges
|
||||||
|
data_dict["category_id"] = data.category.id
|
||||||
del data_dict["category"]
|
del data_dict["category"]
|
||||||
|
|
||||||
service = Service(**data_dict)
|
service = Service(**data_dict)
|
||||||
@ -59,12 +60,15 @@ class ServiceRepository(
|
|||||||
await self.session.commit()
|
await self.session.commit()
|
||||||
|
|
||||||
async def update(self, service: Service, data: UpdateServiceSchema) -> Service:
|
async def update(self, service: Service, data: UpdateServiceSchema) -> Service:
|
||||||
await self._delete_price_ranges_by_service_id(service.id)
|
if data.price_ranges is not None:
|
||||||
price_ranges = self._price_ranges_schemas_to_models(data.price_ranges)
|
await self._delete_price_ranges_by_service_id(service.id)
|
||||||
for price_range in price_ranges:
|
price_ranges = self._price_ranges_schemas_to_models(data.price_ranges)
|
||||||
service.price_ranges.append(price_range)
|
for price_range in price_ranges:
|
||||||
|
service.price_ranges.append(price_range)
|
||||||
del data.price_ranges
|
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)
|
return await self._apply_update_data_to_model(service, data, True)
|
||||||
|
|
||||||
|
|||||||
@ -7,12 +7,7 @@ from repositories.mixins import *
|
|||||||
|
|
||||||
|
|
||||||
class ServiceCategoryRepository(
|
class ServiceCategoryRepository(
|
||||||
BaseRepository,
|
RepCrudMixin[ServiceCategory, CreateServiceCategorySchema, UpdateServiceCategorySchema]
|
||||||
RepGetAllMixin[ServiceCategory],
|
|
||||||
RepDeleteMixin[ServiceCategory],
|
|
||||||
RepCreateMixin[ServiceCategory, CreateServiceCategorySchema],
|
|
||||||
RepUpdateMixin[ServiceCategory, UpdateServiceCategorySchema],
|
|
||||||
RepGetByIdMixin[ServiceCategory],
|
|
||||||
):
|
):
|
||||||
entity_class = ServiceCategory
|
entity_class = ServiceCategory
|
||||||
entity_not_found_msg = "Категория услуги не найдена"
|
entity_not_found_msg = "Категория услуги не найдена"
|
||||||
|
|||||||
@ -1,7 +1,5 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import field_validator
|
|
||||||
|
|
||||||
from modules.fulfillment_base.schemas.service_category import ServiceCategorySchema
|
from modules.fulfillment_base.schemas.service_category import ServiceCategorySchema
|
||||||
from schemas.base import BaseSchema, BaseResponse
|
from schemas.base import BaseSchema, BaseResponse
|
||||||
|
|
||||||
@ -26,20 +24,20 @@ class CreateServiceSchema(BaseSchema):
|
|||||||
cost: Optional[float]
|
cost: Optional[float]
|
||||||
lexorank: str
|
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):
|
class ServiceSchema(CreateServiceSchema):
|
||||||
id: int
|
id: int
|
||||||
|
|
||||||
|
|
||||||
class UpdateServiceSchema(ServiceSchema):
|
class UpdateServiceSchema(BaseSchema):
|
||||||
pass
|
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
|
# endregion
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
from schemas.base import BaseSchema, BaseResponse
|
from schemas.base import BaseSchema, BaseResponse
|
||||||
|
|
||||||
|
|
||||||
@ -14,8 +16,10 @@ class ServiceCategorySchema(CreateServiceCategorySchema):
|
|||||||
id: int
|
id: int
|
||||||
|
|
||||||
|
|
||||||
class UpdateServiceCategorySchema(ServiceCategorySchema):
|
class UpdateServiceCategorySchema(BaseSchema):
|
||||||
pass
|
name: Optional[str] = None
|
||||||
|
deal_service_rank: Optional[str] = None
|
||||||
|
product_service_rank: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
# endregion
|
# endregion
|
||||||
|
|||||||
Reference in New Issue
Block a user