/
Ulyanoff
/
mlops2
Обзор
Документация
Войти
/
Ulyanoff
/
mlops2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/app/api/models.py
38 строк
2 KB
Artem Ivochkin
Initial commit
28 ноя 2025, 21:56
28 ноя 2025, 21:56
509a1cb
Код
Авторство
О чём код?
# -*- coding: utf-8 -*- from datetime import datetime from random import random from pydantic import BaseModel, ConfigDict, PositiveInt, Field, EmailStr, SecretStr from typing_extensions import Annotated class StrictModel(BaseModel): """Строгая модель, обычно наследуемся от неё""" """ ОГРАНИЧЕНИЯ: нельзя преобразовывать строки в цифры, дробные в целые, запрещены неописанные параметры, РАСШИРЕНИЕ: можно построить объект не только из словаря как UserOut(**user_data), но и из другой модели UserOut.model_validate(user_db) (используется для валидации выдачи из SQLAlchemy) """ model_config = ConfigDict(coerce_numbers_to_str=False, extra='forbid', strict=True, from_attributes=True) class UserIn(StrictModel): """Модель пользователя для создания""" name: Annotated[str, Field(min_length=3, max_length=64, examples=["Жора"])] email: EmailStr | None = None psw: SecretStr avatar: bytes | None = Field(None, description="Фоточка юзера", examples=["bytes: Аватарка"]) class UserOut(StrictModel): """Модель пользователя для выдачи""" id: PositiveInt | None = None name: Annotated[str, Field(min_length=3, max_length=64, examples=["Федя"])] email: EmailStr | None = None psw: SecretStr avatar: bytes | None = Field(None, description="Фоточка юзера", examples=["bytes: Аватарка"]) time: datetime