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