forked from HSE_team/BetterCallPraskovia
47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
"""
|
||
Pydantic схемы для User
|
||
"""
|
||
from uuid import UUID
|
||
from datetime import datetime
|
||
from pydantic import BaseModel
|
||
from src.domain.entities.user import UserRole
|
||
|
||
|
||
class UserBase(BaseModel):
|
||
"""Базовая схема пользователя"""
|
||
telegram_id: str
|
||
role: UserRole
|
||
|
||
|
||
class UserCreate(UserBase):
|
||
"""Схема создания пользователя"""
|
||
pass
|
||
|
||
|
||
class UserUpdate(BaseModel):
|
||
"""Схема обновления пользователя"""
|
||
telegram_id: str | None = None
|
||
role: UserRole | None = None
|
||
|
||
|
||
class UserResponse(BaseModel):
|
||
"""Схема ответа с пользователем"""
|
||
user_id: UUID
|
||
telegram_id: str
|
||
role: UserRole
|
||
created_at: datetime
|
||
|
||
@classmethod
|
||
def from_entity(cls, user: "User") -> "UserResponse":
|
||
"""Создать из доменной сущности"""
|
||
return cls(
|
||
user_id=user.user_id,
|
||
telegram_id=user.telegram_id,
|
||
role=user.role,
|
||
created_at=user.created_at
|
||
)
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|