diff --git a/classquiz/routers/quiz.py b/classquiz/routers/quiz.py index e6ccf1a..020ef7d 100644 --- a/classquiz/routers/quiz.py +++ b/classquiz/routers/quiz.py @@ -90,3 +90,15 @@ async def update_quiz(quiz_id: str, quiz_input: QuizInput, user: User = Depends( @router.post("/import/{quiz_id}") async def import_quiz_route(quiz_id: str, user: User = Depends(get_current_user)): return await import_quiz(quiz_id, user) + +@router.delete("/delete/{quiz_id}") +async def delete_quiz(quiz_id: str, user: User = Depends(get_current_user)): + try: + quiz_id = uuid.UUID(quiz_id) + except ValueError: + raise HTTPException(status_code=400, detail="badly formed quiz id") + quiz = await Quiz.objects.get_or_none(id=quiz_id, user_id=user.id) + if quiz is None: + return JSONResponse(status_code=404, content={"detail": "quiz not found"}) + else: + return await quiz.delete() \ No newline at end of file diff --git a/frontend/src/routes/overview.svelte b/frontend/src/routes/overview.svelte index 287c48d..362b428 100644 --- a/frontend/src/routes/overview.svelte +++ b/frontend/src/routes/overview.svelte @@ -42,6 +42,13 @@ const data = await res.json(); window.location.replace(`/admin?token=${data.game_id}&pin=${data.game_pin}&connect=1`); }; + + const deleteQuiz = async (to_delete: string) => { + const res = await fetch(`/api/v1/quiz/delete/${to_delete}`, { + method: 'DELETE' + }); + window.location.reload() + } {#await getData()} @@ -109,6 +116,12 @@ > Edit + + Delete + Edit + + +