74 lines
1.2 KiB
Python
74 lines
1.2 KiB
Python
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
|