from typing import Optional from schemas.base import BaseSchema, OkMessageSchema # region Entities class BasePlaceTypeSchema(BaseSchema): name: str parent_id: Optional[int] class BasePlaceTypeWithCountSchema(BasePlaceTypeSchema): child_count: int class FlatPlaceTypeSchema(BasePlaceTypeSchema): id: int class PlaceTypeSchema(FlatPlaceTypeSchema): children: list['PlaceTypeSchema'] = [] places_count: int class BasePlaceSchema(BaseSchema): parent_id: Optional[int] place_type_id: int class PlaceSchema(BasePlaceSchema): id: int number: int children: list['PlaceSchema'] = [] place_type: BasePlaceTypeWithCountSchema # endregion # region Requests class EditPlaceTypeRequest(BaseSchema): place_type: FlatPlaceTypeSchema class CreatePlaceTypeRequest(BaseSchema): place_type: BasePlaceTypeSchema class EditPlaceRequest(BaseSchema): place: PlaceSchema class CreatePlaceRequest(BaseSchema): place: BasePlaceSchema # endregion # region Responses class GetPlaceTypesResponse(BaseSchema): place_types: list[PlaceTypeSchema] class GetFlatPlaceTypesResponse(BaseSchema): place_types: list[FlatPlaceTypeSchema] class CreatePlaceTypeResponse(OkMessageSchema): pass class EditPlaceTypeResponse(OkMessageSchema): pass class DeletePlaceTypeResponse(OkMessageSchema): pass class GetPlacesResponse(BaseSchema): places: list[PlaceSchema] class CreatePlaceResponse(OkMessageSchema): pass class EditPlaceResponse(OkMessageSchema): pass class DeletePlaceResponse(OkMessageSchema): pass # endregion