from typing import Optional 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 class ServiceSchema(CreateServiceSchema): id: int 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 # 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