from typing import List, Optional from schemas.base import BaseSchema, OkMessageSchema # region Entities # region Services class ServicePriceRangeSchema(BaseSchema): id: int | None from_quantity: int to_quantity: int price: float class ServiceCategorySchema(BaseSchema): id: int name: str deal_service_rank: str product_service_rank: str class ServicePriceCategorySchema(BaseSchema): id: int name: str class ServiceCategoryPriceSchema(BaseSchema): category: ServicePriceCategorySchema price: float class ServiceSchema(BaseSchema): id: int name: str category: ServiceCategorySchema price: float service_type: int price_ranges: List[ServicePriceRangeSchema] category_prices: List[ServiceCategoryPriceSchema] cost: Optional[int] rank: str # endregion # region Kits class BaseServiceKitSchema(BaseSchema): name: str service_type: int class GetServiceKitSchema(BaseServiceKitSchema): id: int services: List[ServiceSchema] class CreateServiceKitSchema(BaseServiceKitSchema): services_ids: List[int] class UpdateServiceKitSchema(BaseServiceKitSchema): id: int services_ids: List[int] # endregion # region Category prices # endregion # endregion # region Requests class ServiceCreateRequest(BaseSchema): service: ServiceSchema class ServiceCreateCategoryRequest(BaseSchema): category: ServiceCategorySchema class ServiceUpdateRequest(BaseSchema): data: ServiceSchema class ServiceDeleteRequest(BaseSchema): service_id: int class CreateServicesKitRequest(BaseSchema): data: CreateServiceKitSchema class UpdateServicesKitRequest(BaseSchema): data: UpdateServiceKitSchema class CreatePriceCategoryRequest(BaseSchema): name: str class UpdatePriceCategoryRequest(BaseSchema): id: int name: str class DeletePriceCategoryRequest(BaseSchema): id: int class ServiceReorderRequest(BaseSchema): draining_service_id: int hovered_service_id: int class ServiceCategoryReorderRequest(BaseSchema): move_down: bool move_up: bool category_id: int service_type: int # endregion # region Responses class ServiceGetAllResponse(BaseSchema): services: List[ServiceSchema] class ServiceGetAllCategoriesResponse(BaseSchema): categories: List[ServiceCategorySchema] class ServiceCreateResponse(OkMessageSchema): pass class ServiceCreateCategoryResponse(OkMessageSchema): pass class ServiceUpdateResponse(OkMessageSchema): pass class ServiceDeleteResponse(OkMessageSchema): pass class CreateServicesKitResponse(OkMessageSchema): pass class UpdateServicesKitResponse(OkMessageSchema): pass class GetAllServicesKitsResponse(BaseSchema): services_kits: List[GetServiceKitSchema] class GetAllPriceCategoriesResponse(BaseSchema): price_categories: List[ServicePriceCategorySchema] class CreatePriceCategoryResponse(OkMessageSchema): pass class UpdatePriceCategoryResponse(OkMessageSchema): pass class DeletePriceCategoryResponse(OkMessageSchema): pass class ServiceReorderResponse(OkMessageSchema): pass class ServiceCategoryReorderResponse(OkMessageSchema): pass # endregion