/
VE1KOST
/
PIR_lab2
Обзор
Документация
Войти
/
VE1KOST
/
PIR_lab2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/app/utils.py
27 строк
1 KB
Vladislav
first_commit
26 дек 2025, 10:17
26 дек 2025, 10:17
9911b9f
Код
Авторство
О чём код?
from pydantic import BaseModel class ErrorResponse(BaseModel): detail: str from fastapi.encoders import jsonable_encoder from typing import Iterable, Set, Any, List, Type from sqlmodel import SQLModel def _required_fields(model: Type[SQLModel]) -> Set[str]: # required if field has no default and not allow_none return {name for name, f in model.__fields__.items() if f.required and not f.allow_none} def select_fields(model: Type[SQLModel], data: Any, include: Iterable[str] | None) -> Any: """Return JSON-serializable with only required fields + selected optional ones. If include is None -> full object. Works for objects or list of objects; keeps required fields to satisfy response_model. """ if include is None or include == []: return jsonable_encoder(data) inc = set([x for x in include if x]) # selected optionals req = _required_fields(model) want = req | inc if isinstance(data, list): return [jsonable_encoder(obj, include=want) for obj in data] return jsonable_encoder(data, include=want)