from sqlalchemy import select, delete from sqlalchemy.ext.asyncio import AsyncSession from models.library import Mistake from schemas.mistake import MistakeResponse, MistakeRequest async def list_mistakes(db: AsyncSession) -> list[MistakeResponse]: stmt = select(Mistake).order_by(Mistake.id.desc()) mistakes = (await db.execute(stmt)).scalars().all() return [ MistakeResponse( id=mistake.id, subject=mistake.subject, module=mistake.module, name=mistake.name, type=mistake.type, question=mistake.question, options=mistake.options, answer=mistake.answer ) for mistake in mistakes ] async def add_mistakes(db: AsyncSession, data: list[MistakeRequest]): db.add_all( [ Mistake( subject=item.subject, module=item.module, name=item.name, type=item.type, question=item.question, options=item.options, answer=item.answer, ) for item in data ] ) await db.commit() return True async def remove_mistake(db: AsyncSession, mistake_id: int) -> bool: await db.execute(delete(Mistake).where(Mistake.id == mistake_id)) await db.commit() return True