mirror of
https://github.com/FutureOfMedTech-FITM-hack/backend.git
synced 2024-11-25 15:53:43 +03:00
54 lines
1.5 KiB
Python
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()
|