update chức năng gán file mp3 vào trang pdf

This commit is contained in:
2026-04-09 10:14:53 +07:00
parent faab7fec7d
commit ce31a2702c
7 changed files with 231 additions and 16 deletions
+25 -1
View File
@@ -18,7 +18,7 @@ from sqlalchemy.orm import Session
from ..database import get_db
from ..dependencies import get_current_user, require_role
from ..models import PDF, PDFAudio, UserRole
from ..schemas import AudioOut, AudioUploadResult
from ..schemas import AudioOut, AudioPatch, AudioUploadResult
router = APIRouter(prefix="/pdfs", tags=["audio"])
@@ -138,6 +138,30 @@ async def upload_audio(
return results
# ── PATCH /api/pdfs/{pdf_id}/audio/{audio_id} ───────────────────────────────
@router.patch("/{pdf_id}/audio/{audio_id}", response_model=AudioOut)
def patch_audio(
pdf_id: int,
audio_id: int,
body: AudioPatch,
current_user=Depends(require_role(UserRole.admin, UserRole.teacher)),
db: Session = Depends(get_db),
):
track = db.query(PDFAudio).filter(PDFAudio.id == audio_id, PDFAudio.pdf_id == pdf_id).first()
if not track:
raise HTTPException(status_code=404, detail="Audio track not found.")
if body.track_name is not None:
track.track_name = body.track_name
if body.page_number is not None:
track.page_number = body.page_number if body.page_number > 0 else None
if body.sort_order is not None:
track.sort_order = body.sort_order
db.commit()
db.refresh(track)
return AudioOut.model_validate(track)
# ── DELETE /api/pdfs/{pdf_id}/audio/{audio_id} ───────────────────────────────
@router.delete("/{pdf_id}/audio/{audio_id}", status_code=status.HTTP_204_NO_CONTENT)