PIbd-42_SSPR/db/repositories/experiment_parameters_repos.py

45 lines
1.6 KiB
Python
Raw Normal View History

from typing import Sequence
from sqlalchemy import update, delete
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from db.models.experiment_parameters_model import ExperimentParameters
class ExperimentParametersRepository:
def __init__(self, session: AsyncSession):
self.session = session
async def get_all(self) -> Sequence[ExperimentParameters]:
result = await self.session.execute(select(ExperimentParameters))
return result.scalars().all()
async def get_by_id(self, id: int) -> ExperimentParameters:
result = await self.session.execute(select(ExperimentParameters).where(ExperimentParameters.id == id))
return result.scalar_one_or_none()
async def get_experiment_parameters_by_category(self, session: AsyncSession, category_id: int) -> Sequence[ExperimentParameters]:
result = await self.session.execute(
select(ExperimentParameters).where(ExperimentParameters.experiment_category_id == category_id)
)
return result.scalars().all()
async def create(self, new_data: ExperimentParameters):
self.session.add(new_data)
await self.session.commit()
async def update(self, id: int, updated_data: dict):
stmt = (
update(ExperimentParameters).
where(ExperimentParameters.id == id).
values(**updated_data)
)
await self.session.execute(stmt)
await self.session.commit()
async def delete(self, id: int):
stmt = delete(ExperimentParameters).where(ExperimentParameters.id == id)
await self.session.execute(stmt)
await self.session.commit()