fix: service schemas fixed

This commit is contained in:
2025-10-03 09:06:01 +04:00
parent c2594f9d55
commit 9c9b3f4706
4 changed files with 25 additions and 24 deletions

View File

@ -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,11 +60,14 @@ class ServiceRepository(
await self.session.commit()
async def update(self, service: Service, data: UpdateServiceSchema) -> Service:
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
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)

View File

@ -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 = "Категория услуги не найдена"

View File

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

View File

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