/
razerkiy
/
FastAPI
Обзор
Документация
Войти
/
razerkiy
/
FastAPI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
repository.py
41 строка
2 KB
kirillpekler
first_commit
18 окт 2024, 17:33
18 окт 2024, 17:33
0cec3a1
Код
Авторство
О чём код?
from sqlalchemy import select from database import new_session, TaskOrm from schemas import STaskAdd, STask # код для реализации шаблона проектирования Repository # класс реализующий репозиторий задач class TaskRepository: # добавление одной задачи @classmethod async def add_one(cls, data: STaskAdd) -> int: # объявление контекстного менеджера сессии async with new_session() as session: # создаём словарь задач task_dict = data.model_dump() # создаём объект модели данных класса "задача" из словаря task = TaskOrm(**task_dict) # добавляем запись в таблицу базы данных session.add(task) await session.flush() # фиксируем изменения в базе данных await session.commit() return task.id # поиск всех задач @classmethod async def find_all(cls) -> list[STask]: # объявляем контекстный менеджер сессий async with new_session() as session: # создаём запрос на выбор всех данных из таблицы базы данных query = select(TaskOrm) # сохраняем результат запроса в отдельную переменную result = await session.execute(query) # получаем объекты базы данных task_models = result.scalars().all() # и сконвертируем их в схемы pydantic task_schemas = [STask.model_validate(task_model) for task_model in task_models] # и их возвращаем return task_schemas