98 lines
1.6 KiB
Python
98 lines
1.6 KiB
Python
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
|