from typing import List, Optional from fastapi import Depends from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from med_backend.db.dependencies import get_db_session from med_backend.db.models.dummy_model import DummyModel class DummyDAO: """Class for accessing dummy table.""" def __init__(self, session: AsyncSession = Depends(get_db_session)): self.session = session async def create_dummy_model(self, name: str) -> None: """ Add single dummy to session. :param name: name of a dummy. """ self.session.add(DummyModel(name=name)) async def get_all_dummies(self, limit: int, offset: int) -> List[DummyModel]: """ Get all dummy models with limit/offset pagination. :param limit: limit of dummies. :param offset: offset of dummies. :return: stream of dummies. """ raw_dummies = await self.session.execute( select(DummyModel).limit(limit).offset(offset), ) return raw_dummies.scalars().fetchall() async def filter( self, name: Optional[str] = None, ) -> List[DummyModel]: """ Get specific dummy model. :param name: name of dummy instance. :return: dummy models. """ query = select(DummyModel) if name: query = query.where(DummyModel.name == name) rows = await self.session.execute(query) return rows.scalars().fetchall()