Перейти к содержанию

Модели сущностей

Модуль entity.models содержит Pydantic-схемы для работы с данными пользователей. Эти схемы обеспечивают валидацию, сериализацию и документирование данных на границах системы.

Особенности

  • Строгая типизация всех полей
  • Встроенная валидация данных
  • Сериализация/десериализация в JSON
  • Поддержка документации OpenAPI
  • Интеграция с FastAPI

Документация API

UserCreateSchema

Схема для создания нового пользователя.

Bases: BaseModel

Source code in src/entity/models.py
 6
 7
 8
 9
10
11
class UserCreateSchema(BaseModel):
    first_name: str
    last_name: str
    email: EmailStr
    username: str
    password: str

UserResponseSchema

Схема для ответа с данными пользователя.

Bases: BaseModel

Source code in src/entity/models.py
14
15
16
17
18
19
20
21
class UserResponseSchema(BaseModel):
    id: UUID
    first_name: str
    last_name: str
    email: EmailStr
    username: str
    is_active: bool
    is_verified: bool

ChangePasswordSchema

Схема для смены пароля пользователя.

Bases: BaseModel

Source code in src/entity/models.py
24
25
class ChangePasswordSchema(BaseModel):
    new_password: str

Примеры использования

Создание пользователя

from uuid import uuid4
from src.entity.models import UserCreateSchema, UserResponseSchema

# Валидация входящих данных
user_data = {
    "first_name": "Иван",
    "last_name": "Иванов",
    "email": "ivan@example.com",
    "username": "ivanov",
    "password": "secure_password123"
}

# Создание и валидация данных
user = UserCreateSchema(**user_data)

# Преобразование в формат ответа
response_data = UserResponseSchema(
    id=uuid4(),
    first_name=user.first_name,
    last_name=user.last_name,
    email=user.email,
    username=user.username,
    is_active=True,
    is_verified=False
)

Смена пароля

from src.entity.models import ChangePasswordSchema

# Валидация нового пароля
password_data = {"new_password": "new_secure_password123"}
change_password = ChangePasswordSchema(**password_data)

Рекомендации по использованию

  1. Валидация данных
  2. Всегда используйте схемы для валидации входящих данных
  3. Не передавайте сырые словари в бизнес-логику
  4. Используйте встроенные валидаторы Pydantic

  5. Безопасность

  6. Никогда не возвращайте пароли в ответах API
  7. Используйте разные схемы для ввода и вывода данных
  8. Валидируйте входные данные как можно раньше

  9. Документирование

  10. Дополнительные поля документации можно добавить через Field
  11. Используйте example и description для улучшения документации OpenAPI

Интеграция с FastAPI

Схемы полностью совместимы с FastAPI и могут использоваться для:

  • Валидации входных данных запросов
  • Сериализации ответов API
  • Генерации документации OpenAPI

Ограничения

  • Требуется Pydantic v2+
  • Все поля должны быть явно типизированы
  • Вложенные схемы должны быть определены до их использования