/
ivanstrike
/
tasker
Обзор
Документация
Войти
/
ivanstrike
/
tasker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
python_Sklyarenko/Lab1/app/utils.py
28 строк
1009 B
ivanstrike
Lab3
13 дек 2025, 11:15
13 дек 2025, 11:15
15c0fa5
Код
Авторство
О чём код?
from typing import Iterable, List, Tuple, Any, Optional, Sequence from pydantic import BaseModel from sqlalchemy.orm import Query def apply_sparse_fields(item: Any, include: Optional[str]): """ Given a Pydantic model (or dict), return dict filtered by fields in 'include' (comma-separated). If include is None/empty -> return as-is. """ if not include: return item fields = {f.strip() for f in include.split(",") if f.strip()} if isinstance(item, BaseModel): data = item.model_dump() elif isinstance(item, dict): data = dict(item) else: # try to serialize via pydantic if available try: data = item.__dict__ except Exception: return item return {k: v for k, v in data.items() if k in fields} def paginate_query(q, offset: int = 0, limit: int = 20) -> Tuple[List[Any], int]: total = q.count() items = q.offset(max(0, offset)).limit(max(1, min(100, limit))).all() return items, total