60 lines
2.7 KiB
Python
60 lines
2.7 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import date, datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from src.application.domain.entities import UserEntity
|
|
|
|
|
|
class MeUserPublicResponse(BaseModel):
|
|
model_config = ConfigDict(from_attributes=False)
|
|
|
|
id: str | None = Field(None, description='Идентификатор пользователя')
|
|
email: str | None = Field(None, description='Email')
|
|
first_name: str | None = Field(None, description='Имя')
|
|
middle_name: str | None = Field(None, description='Отчество')
|
|
last_name: str | None = Field(None, description='Фамилия')
|
|
birth_date: date | None = Field(None, description='Дата рождения')
|
|
encrypted_mnemonic: str | None = Field(None, description='Шифрованная мнемоника')
|
|
phone: str | None = Field(None, description='Телефон')
|
|
passport_data: str | None = Field(None, description='Паспортные данные')
|
|
inn: str | None = Field(None, description='ИНН')
|
|
erc20: str | None = Field(None, description='ERC-20 адрес')
|
|
avatar_link: str | None = Field(None, description='HTTPS-ссылка на текущий аватар в хранилище')
|
|
kyc_verified: bool | None = Field(None, description='Признак пройденного KYC')
|
|
is_deleted: bool | None = Field(None, description='Удалён ли аккаунт')
|
|
created_at: datetime | None = Field(None, description='Время создания записи')
|
|
updated_at: datetime | None = Field(None, description='Время последнего обновления')
|
|
kyc_verified_at: datetime | None = Field(None, description='Время подтверждения KYC')
|
|
|
|
@classmethod
|
|
def from_user(cls, user: UserEntity) -> MeUserPublicResponse:
|
|
return cls(
|
|
id=user.id,
|
|
email=user.email,
|
|
first_name=user.first_name,
|
|
middle_name=user.middle_name,
|
|
last_name=user.last_name,
|
|
birth_date=user.birth_date,
|
|
encrypted_mnemonic=user.encrypted_mnemonic,
|
|
phone=user.phone,
|
|
passport_data=user.passport_data,
|
|
inn=user.inn,
|
|
erc20=user.erc20,
|
|
avatar_link=user.avatar_link,
|
|
kyc_verified=user.kyc_verified,
|
|
is_deleted=user.is_deleted,
|
|
created_at=user.created_at,
|
|
updated_at=user.updated_at,
|
|
kyc_verified_at=user.kyc_verified_at,
|
|
)
|
|
|
|
|
|
class SetAvatarPublicResponse(MeUserPublicResponse):
|
|
webp_size_bytes: int = Field(
|
|
...,
|
|
ge=0,
|
|
description='Размер сохранённого файла аватара в формате WebP, байты',
|
|
)
|