diff --git a/drill-and-practice/config/readme.txt b/drill-and-practice/config/readme.txt deleted file mode 100644 index f3fec56..0000000 --- a/drill-and-practice/config/readme.txt +++ /dev/null @@ -1 +0,0 @@ -You could add project configuration files here. \ No newline at end of file diff --git a/drill-and-practice/routes/apis/questionApi.js b/drill-and-practice/routes/apis/questionApi.js new file mode 100644 index 0000000..94eb2f8 --- /dev/null +++ b/drill-and-practice/routes/apis/questionApi.js @@ -0,0 +1,42 @@ +import * as questionService from "../../services/questionService.js"; +import * as answerService from "../../services/answerService.js"; + +const getRandQuestion = async ({ response }) => { + const randQuestion = await questionService.getRandQuestionAPI(); + if (randQuestion === null) { + response.body = {}; + } else { + const questionId = randQuestion.id; + const optionsData = await answerService.getAnswersByQuestionId(questionId); + optionsData.forEach((option) => { + delete option.question_id; + delete option.is_correct; + const optionId = option.id; + delete option.id; + option.optionId = optionId; + const optionText = option.option_text; + delete option.option_text; + option.optionText = optionText; + }); + const responseQuestion = { + questionId: questionId, + questionText: randQuestion.question_text, + answeroptions: optionsData, + }; + response.body = responseQuestion; + } +}; + +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); + response.body = { correct: correct }; +}; + +export { getRandQuestion, checkRandQuestion }; diff --git a/drill-and-practice/routes/apis/readme.txt b/drill-and-practice/routes/apis/readme.txt deleted file mode 100644 index 3151dea..0000000 --- a/drill-and-practice/routes/apis/readme.txt +++ /dev/null @@ -1 +0,0 @@ -You could add api-related endpoints here. \ No newline at end of file diff --git a/drill-and-practice/routes/routes.js b/drill-and-practice/routes/routes.js index 2cddbf2..87bddb5 100644 --- a/drill-and-practice/routes/routes.js +++ b/drill-and-practice/routes/routes.js @@ -1,6 +1,7 @@ import { Router } from "../deps.js"; import * as mainController from "./controllers/mainController.js"; import * as authController from "./controllers/authController.js"; +import * as topicController from "./controllers/topicController.js"; const router = new Router(); @@ -10,6 +11,6 @@ router.get("/auth/register", authController.showRegister); router.post("/auth/login", authController.login); router.get("/topics", topicController.listTopics); router.post("/topics", topicController.addTopic); -router.get("/topics/:id/delete", topicController.deleteTopic); - +router.get("/topics/:tId/delete", topicController.deleteTopic); +router.get("/topics/:tId", qu); export { router }; diff --git a/drill-and-practice/services/questionService.js b/drill-and-practice/services/questionService.js index e0dd3c1..cf9a2d4 100644 --- a/drill-and-practice/services/questionService.js +++ b/drill-and-practice/services/questionService.js @@ -32,6 +32,14 @@ const getRandQuestion = async (topicId) => { return result.rows[0]; }; +const getRandQuestionAPI = async () => { + const result = await sql`SELECT * FROM questions ORDER BY RANDOM() LIMIT 1`; + if (result.rows.length === 0) { + return null; + } + return result.rows[0]; +}; + export { countQuestions, getQuestionsByTopicId, @@ -39,4 +47,5 @@ export { addQuestion, deleteQuestion, getRandQuestion, + getRandQuestionAPI, }; diff --git a/drill-and-practice/services/readme.txt b/drill-and-practice/services/readme.txt deleted file mode 100644 index 8be2a0e..0000000 --- a/drill-and-practice/services/readme.txt +++ /dev/null @@ -1 +0,0 @@ -You could add services here \ No newline at end of file diff --git a/drill-and-practice/static/readme.txt b/drill-and-practice/static/readme.txt deleted file mode 100644 index de4317a..0000000 --- a/drill-and-practice/static/readme.txt +++ /dev/null @@ -1 +0,0 @@ -You could add static content here. Note that you cannot currently submit binary data. \ No newline at end of file diff --git a/drill-and-practice/views/correct.eta b/drill-and-practice/views/correct.eta new file mode 100644 index 0000000..d06b822 --- /dev/null +++ b/drill-and-practice/views/correct.eta @@ -0,0 +1,4 @@ +<% layout("./layouts/layout.eta") %> +
Correct options are not found.
+<% } %> + +Next question diff --git a/drill-and-practice/views/partials/readme.txt b/drill-and-practice/views/partials/readme.txt deleted file mode 100644 index b5ac817..0000000 --- a/drill-and-practice/views/partials/readme.txt +++ /dev/null @@ -1 +0,0 @@ -Add any necessary partials here. \ No newline at end of file