trivia: avoid adding duplicate questiosn to the db

This commit is contained in:
Ayden Jahola 2024-09-08 18:38:08 +01:00
parent 83fc8d207e
commit eb6445b0f9
No known key found for this signature in database
GPG key ID: 71DD90AE4AE92742

View file

@ -100,31 +100,45 @@ const fetchTriviaQuestion = async (categoryId, categoryName) => {
`https://opentdb.com/api.php?amount=1&category=${categoryId}&token=${sessionToken}` `https://opentdb.com/api.php?amount=1&category=${categoryId}&token=${sessionToken}`
); );
const retryApiQuestion = retryResponse.data.results[0]; const retryApiQuestion = retryResponse.data.results[0];
await TriviaQuestion.create({
question: decode(retryApiQuestion.question),
correct_answer: decode(retryApiQuestion.correct_answer),
incorrect_answers: retryApiQuestion.incorrect_answers.map(decode),
category: categoryName,
last_served: null,
});
triviaQuestion = await TriviaQuestion.findOne({ triviaQuestion = await TriviaQuestion.findOne({
question: decode(retryApiQuestion.question), question: decode(retryApiQuestion.question),
category: categoryName, category: categoryName,
}); });
if (!triviaQuestion) {
await TriviaQuestion.create({
question: decode(retryApiQuestion.question),
correct_answer: decode(retryApiQuestion.correct_answer),
incorrect_answers: retryApiQuestion.incorrect_answers.map(decode),
category: categoryName,
last_served: null,
});
triviaQuestion = await TriviaQuestion.findOne({
question: decode(retryApiQuestion.question),
category: categoryName,
});
}
} else { } else {
await TriviaQuestion.create({
question: decode(apiQuestion.question),
correct_answer: decode(apiQuestion.correct_answer),
incorrect_answers: apiQuestion.incorrect_answers.map(decode),
category: categoryName,
last_served: null,
});
triviaQuestion = await TriviaQuestion.findOne({ triviaQuestion = await TriviaQuestion.findOne({
question: decode(apiQuestion.question), question: decode(apiQuestion.question),
category: categoryName, category: categoryName,
}); });
if (!triviaQuestion) {
await TriviaQuestion.create({
question: decode(apiQuestion.question),
correct_answer: decode(apiQuestion.correct_answer),
incorrect_answers: apiQuestion.incorrect_answers.map(decode),
category: categoryName,
last_served: null,
});
triviaQuestion = await TriviaQuestion.findOne({
question: decode(apiQuestion.question),
category: categoryName,
});
}
} }
LAST_API_CALL.time = Date.now(); // Update the last API call time LAST_API_CALL.time = Date.now(); // Update the last API call time