diff --git a/drill-and-practice/routes/apis/questionApi.js b/drill-and-practice/routes/apis/questionApi.js index 94eb2f8..7abce6f 100644 --- a/drill-and-practice/routes/apis/questionApi.js +++ b/drill-and-practice/routes/apis/questionApi.js @@ -29,13 +29,18 @@ const getRandQuestion = async ({ response }) => { const checkRandQuestion = async ({ request, response }) => { const body = await request.body(); - const questionId = body.value.questionId; - const optionId = body.value.optionId; - const correctOptionIds = await answerService.getCorrectOptionIds(questionId); - const correctOptionIdsArray = correctOptionIds.map((option) => { - return option.id; - }); - const correct = correctOptionIdsArray.includes(optionId); + const data = await body.value; + console.log(data); + const questionId = data.questionId; + const optionId = data.optionId; + console.log(questionId); + console.log(optionId); + const correctOptionIds = ( + await answerService.getCorrectOptionIds(questionId) + ).map((obj) => obj.id); + console.log(correctOptionIds); + const correct = correctOptionIds.includes(Number(optionId)); + console.log(correct); response.body = { correct: correct }; }; diff --git a/drill-and-practice/routes/controllers/answerController.js b/drill-and-practice/routes/controllers/answerController.js index c15437b..199def0 100644 --- a/drill-and-practice/routes/controllers/answerController.js +++ b/drill-and-practice/routes/controllers/answerController.js @@ -48,7 +48,7 @@ const deleteAnswer = async ({ params, response }) => { const topicId = params.tId; const questionId = params.qId; const optionId = params.oId; - await answerService.deleteAnswer(questionId, optionId); + await answerService.deleteAnswer(optionId); response.redirect(`/topics/${topicId}/questions/${questionId}`); }; diff --git a/drill-and-practice/routes/controllers/questionController.js b/drill-and-practice/routes/controllers/questionController.js index ac59d6a..5578b68 100644 --- a/drill-and-practice/routes/controllers/questionController.js +++ b/drill-and-practice/routes/controllers/questionController.js @@ -101,7 +101,6 @@ const storeAnswer = async ({ response, params, state }) => { const correctOptionIds = ( await answerService.getCorrectOptionIds(questionId) ).map((obj) => obj.id); - console.log(correctOptionIds); const correct = correctOptionIds.includes(Number(optionId)); await answerService.storeAnswer(userId, questionId, optionId); if (correct) { diff --git a/drill-and-practice/routes/routes.js b/drill-and-practice/routes/routes.js index ebc12aa..7cfb64c 100644 --- a/drill-and-practice/routes/routes.js +++ b/drill-and-practice/routes/routes.js @@ -20,7 +20,7 @@ router.post("/auth/register", authController.register); // topicController routes (topics) router.get("/topics", topicController.listTopics); router.post("/topics", topicController.addTopic); -router.get("/topics/:tId/delete", topicController.deleteTopic); +router.post("/topics/:tId/delete", topicController.deleteTopic); // questionController routes (questions) router.get("/topics/:tId", questionController.listQuestions); @@ -54,6 +54,6 @@ router.post( // questionApi routes (API) router.get("/api/questions/random", questionApi.getRandQuestion); -router.post("api/questions/answer", questionApi.checkRandQuestion); +router.post("/api/questions/answer", questionApi.checkRandQuestion); export { router }; diff --git a/drill-and-practice/services/answerService.js b/drill-and-practice/services/answerService.js index 625d402..b46400e 100644 --- a/drill-and-practice/services/answerService.js +++ b/drill-and-practice/services/answerService.js @@ -15,8 +15,7 @@ const addAnswer = async (questionId, optionText, isCorrect) => { await sql`INSERT INTO question_answer_options (question_id, option_text, is_correct) VALUES (${questionId}, ${optionText}, ${isCorrect})`; }; -const deleteAnswer = async (questionId, optionId) => { - await sql`DELETE FROM question_answer_options WHERE question_id = ${questionId} AND id = ${optionId}`; +const deleteAnswer = async (optionId) => { await sql`DELETE FROM question_answer_options WHERE id = ${optionId}`; }; diff --git a/drill-and-practice/services/topicService.js b/drill-and-practice/services/topicService.js index 71feac6..d7e0b74 100644 --- a/drill-and-practice/services/topicService.js +++ b/drill-and-practice/services/topicService.js @@ -26,6 +26,9 @@ const getTopicByTopicId = async (topicId) => { }; const deleteTopic = async (topicId) => { + await sql`DELETE FROM question_answers WHERE question_id IN (SELECT id FROM questions WHERE topic_id = ${topicId})`; + await sql`DELETE FROM question_answer_options WHERE question_id IN (SELECT id FROM questions WHERE topic_id = ${topicId})`; + await sql`DELETE FROM questions WHERE topic_id = ${topicId}`; await sql`DELETE FROM topics WHERE id = ${topicId}`; }; diff --git a/drill-and-practice/views/incorrect.eta b/drill-and-practice/views/incorrect.eta index f4ac566..5943616 100644 --- a/drill-and-practice/views/incorrect.eta +++ b/drill-and-practice/views/incorrect.eta @@ -8,7 +8,7 @@ <% it.data.forEach(item => { %>
Correct options are not found.
<% } %> diff --git a/drill-and-practice/views/topics.eta b/drill-and-practice/views/topics.eta index 093cfc3..1cfc634 100644 --- a/drill-and-practice/views/topics.eta +++ b/drill-and-practice/views/topics.eta @@ -39,5 +39,7 @@ Name:You must be an admin to add a topic.
<% } %>