from typing import List, Optional from schemas.base import BaseSchema, OkMessageSchema from schemas.payrate import PayRateSchema from schemas.position import PositionSchema from schemas.role import RoleSchema # region Entities class BasicUser(BaseSchema): telegram_id: int phone_number: str | None = None first_name: str second_name: str patronymic: str comment: str passport_data: str | None = None is_admin: bool is_blocked: bool is_deleted: bool role_key: str pay_rate: Optional[PayRateSchema] = None class BaseUser(BasicUser): id: int class UserSchema(BaseUser): role: RoleSchema position: Optional[PositionSchema] = None class UserUpdate(BaseUser): position_key: Optional[str] = None class UserCreate(BasicUser): position_key: Optional[str] = None # endregion # region Requests class UpdateUserRequest(BaseSchema): data: UserUpdate class CreateUserRequest(BaseSchema): data: UserCreate # endregion # region Responses class GetAllUsersResponse(BaseSchema): users: List[UserSchema] class UpdateUserResponse(OkMessageSchema): pass class CreateUserResponse(OkMessageSchema): pass class GetManagersResponse(BaseSchema): managers: List[UserSchema] # endregion