backend/med_backend/db/dao/dummy_dao.py

54 lines
1.5 KiB
Python

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()