feat:更新练习题接口
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
from sqlalchemy import select, delete
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.orm import selectinload
|
||||
|
||||
from models.library import LibraryFile, LibraryFileQuestion
|
||||
from schemas.library import LibraryFileRequest, LibraryFileResponse, QuestionResponse
|
||||
from models.library import LibraryFile
|
||||
from schemas.library import LibraryFileRequest, LibraryFileResponse
|
||||
|
||||
|
||||
async def list_files(db: AsyncSession) -> list[LibraryFileResponse]:
|
||||
@@ -20,7 +19,6 @@ async def list_files(db: AsyncSession) -> list[LibraryFileResponse]:
|
||||
size=file.size,
|
||||
content=file.content,
|
||||
uploadTime=file.create_time.strftime("%Y-%m-%d %H:%M:%S"),
|
||||
questions=[],
|
||||
)
|
||||
for file in files
|
||||
]
|
||||
@@ -28,7 +26,7 @@ async def list_files(db: AsyncSession) -> list[LibraryFileResponse]:
|
||||
|
||||
async def add_file(db: AsyncSession, data: LibraryFileRequest) -> bool:
|
||||
"""
|
||||
创建题库文件及其题目
|
||||
创建题库文件
|
||||
"""
|
||||
file = LibraryFile(
|
||||
subject=data.subject,
|
||||
@@ -40,18 +38,6 @@ async def add_file(db: AsyncSession, data: LibraryFileRequest) -> bool:
|
||||
)
|
||||
|
||||
db.add(file)
|
||||
await db.flush()
|
||||
|
||||
for q in data.questions:
|
||||
question = LibraryFileQuestion(
|
||||
library_file_id=file.id,
|
||||
type=q.type,
|
||||
question=q.question,
|
||||
options=q.options,
|
||||
answer=q.answer
|
||||
)
|
||||
db.add(question)
|
||||
|
||||
await db.commit()
|
||||
|
||||
return True
|
||||
@@ -59,7 +45,7 @@ async def add_file(db: AsyncSession, data: LibraryFileRequest) -> bool:
|
||||
|
||||
async def edit_file(db: AsyncSession, file_id: int, data: LibraryFileRequest) -> bool:
|
||||
"""
|
||||
编辑题库文件及其题目
|
||||
编辑题库文件
|
||||
"""
|
||||
|
||||
result = await db.execute(
|
||||
@@ -76,33 +62,13 @@ async def edit_file(db: AsyncSession, file_id: int, data: LibraryFileRequest) ->
|
||||
file.type = data.type
|
||||
file.content = data.content
|
||||
|
||||
await db.execute(
|
||||
delete(LibraryFileQuestion)
|
||||
.where(LibraryFileQuestion.library_file_id == file.id)
|
||||
)
|
||||
|
||||
# 4. 插入新题目
|
||||
for q in data.questions:
|
||||
question = LibraryFileQuestion(
|
||||
library_file_id=file.id,
|
||||
type=q.type,
|
||||
question=q.question,
|
||||
options=q.options,
|
||||
answer=q.answer,
|
||||
)
|
||||
db.add(question)
|
||||
|
||||
await db.commit()
|
||||
|
||||
return True
|
||||
|
||||
|
||||
async def get_file(db: AsyncSession, file_id: int) -> LibraryFileResponse:
|
||||
stmt = (
|
||||
select(LibraryFile)
|
||||
.options(selectinload(LibraryFile.questions))
|
||||
.where(LibraryFile.id == file_id)
|
||||
)
|
||||
stmt = (select(LibraryFile).where(LibraryFile.id == file_id))
|
||||
result = await db.execute(stmt)
|
||||
file = result.scalar_one_or_none()
|
||||
|
||||
@@ -115,14 +81,4 @@ async def get_file(db: AsyncSession, file_id: int) -> LibraryFileResponse:
|
||||
size=file.size,
|
||||
content=file.content,
|
||||
uploadTime=file.create_time.strftime("%Y-%m-%d %H:%M:%S"),
|
||||
questions=[
|
||||
QuestionResponse(
|
||||
id=q.id,
|
||||
type=q.type,
|
||||
question=q.question,
|
||||
options=q.options,
|
||||
answer=q.answer
|
||||
)
|
||||
for q in file.questions
|
||||
],
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user