Refactor bisaya course progress reset logic: Replace raw SQL queries with Sequelize ORM methods for fetching lesson and exercise IDs. This improves code readability and maintainability while ensuring consistent database interactions.

This commit is contained in:
Torsten Schulz (local)
2026-03-25 16:13:05 +01:00
parent 6be816fe48
commit 3ac4ea04d5

View File

@@ -98,21 +98,26 @@ const LESSON_DIDACTICS = {
async function resetBisayaProgress(courseIds) { async function resetBisayaProgress(courseIds) {
if (courseIds.length === 0) return { lessonProgress: 0, exerciseProgress: 0 }; if (courseIds.length === 0) return { lessonProgress: 0, exerciseProgress: 0 };
const lessonIds = await sequelize.query( const lessonIds = await VocabCourseLesson.findAll({
`SELECT id FROM community.vocab_course_lesson WHERE course_id = ANY(:courseIds)`, where: {
{ courseId: {
replacements: { courseIds }, [Op.in]: courseIds
type: sequelize.QueryTypes.SELECT
} }
); },
attributes: ['id']
});
const exerciseIds = await sequelize.query( const numericLessonIds = lessonIds.map((row) => row.id);
`SELECT id FROM community.vocab_grammar_exercise WHERE lesson_id = ANY(:lessonIds)`, const exerciseIds = numericLessonIds.length > 0
{ ? await VocabGrammarExercise.findAll({
replacements: { lessonIds: lessonIds.map((row) => row.id) || [0] }, where: {
type: sequelize.QueryTypes.SELECT lessonId: {
[Op.in]: numericLessonIds
} }
); },
attributes: ['id']
})
: [];
const deletedLessonProgress = await VocabCourseProgress.destroy({ const deletedLessonProgress = await VocabCourseProgress.destroy({
where: { courseId: { [Op.in]: courseIds } } where: { courseId: { [Op.in]: courseIds } }