from typing import Optional from pydantic import field_validator from modules.fulfillment_base.schemas.service_category import ServiceCategorySchema from schemas.base import BaseSchema, BaseResponse # region Entity class ServicePriceRangeSchema(BaseSchema): id: int | None from_quantity: int to_quantity: int price: float class CreateServiceSchema(BaseSchema): name: str category: ServiceCategorySchema category_id: Optional[int] = None price: float service_type: int price_ranges: list[ServicePriceRangeSchema] 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 # endregion # region Request class CreateServiceRequest(BaseSchema): entity: CreateServiceSchema class UpdateServiceRequest(BaseSchema): entity: UpdateServiceSchema # endregion # region Response class GetServicesResponse(BaseSchema): items: list[ServiceSchema] class CreateServiceResponse(BaseResponse): entity: ServiceSchema class UpdateServiceResponse(BaseResponse): pass class DeleteServiceResponse(BaseResponse): pass # endregion