Update auth, question, answer

This commit is contained in:
AndrewTrieu
2023-03-09 14:16:17 +02:00
parent 67b0a911c2
commit e6d68e98d6
4 changed files with 81 additions and 1 deletions

View File

@@ -27,7 +27,6 @@ const createUser = async ({ request, response, render }) => {
response.status = 422;
userData.errors = errors;
render("register.eta", userData);
return;
} else {
const hashedPassword = await bcrypt.hash(userData.password);
const user = await authServices.createUser(userData.email, hashedPassword);

View File

@@ -8,5 +8,8 @@ router.get("/", mainController.showMain);
router.get("/auth/login", authController.showLogin);
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);
export { router };

View File

@@ -0,0 +1,44 @@
import { sql } from "../database/database.js";
const countAnswers = async () => {
const result = await sql`SELECT COUNT(id) FROM question_answer_options`;
return result.rows[0].count;
};
const getAnswersByQuestionId = async (questionId) => {
const result =
await sql`SELECT * FROM question_answer_options WHERE question_id = ${questionId}`;
return result.rows;
};
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 deleteAnswerByOptionId = async (optionId) => {
await sql`DELETE FROM question_answer_options WHERE id = ${optionId}`;
};
const getCorrectOption = async (questionId) => {
const result =
await sql`SELECT * FROM question_answer_options WHERE question_id = ${questionId} AND is_correct = true`;
return result.rows;
};
const storeAnswer = async (userId, questionId, optionId) => {
await sql`INSERT INTO question_answers (user_id, question_id, question_answer_option_id) VALUES (${userId}, ${questionId}, ${optionId})`;
};
export {
countAnswers,
getAnswersByQuestionId,
addAnswer,
deleteAnswer,
deleteAnswerByOptionId,
getCorrectOption,
storeAnswer,
};

View File

@@ -6,3 +6,37 @@ const countQuestions = async () => {
};
const getQuestionsByTopicId = async (topicId) => {
const result = await sql`SELECT * FROM questions WHERE topic_id = ${topicId}`;
return result.rows;
};
const getQuestionByQuestionId = async (questionId) => {
const result = await sql`SELECT * FROM questions WHERE id = ${questionId}`;
return result.rows[0];
};
const addQuestion = async (userId, topicId, question) => {
await sql`INSERT INTO questions (user_id, topic_id, question_text) VALUES (${userId}, ${topicId}, ${question})`;
};
const deleteQuestion = async (questionId) => {
await sql`DELETE FROM questions WHERE id = ${questionId}`;
};
const getRandQuestion = async (topicId) => {
const result =
await sql`SELECT * FROM questions WHERE topic_id = ${topicId} ORDER BY RANDOM() LIMIT 1`;
if (result.rows.length === 0) {
return null;
}
return result.rows[0];
};
export {
countQuestions,
getQuestionsByTopicId,
getQuestionByQuestionId,
addQuestion,
deleteQuestion,
getRandQuestion,
};