52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
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
|