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
 |