Refactor updateFoodCareExercises function to optimize database queries and improve code clarity

- Replaced the Sequelize findAll method with a raw SQL query to fetch Bisaya courses along with native language information, enhancing performance.
- Updated variable names for consistency and clarity, ensuring better readability of the code.
- Adjusted the handling of course owner IDs to align with the new query structure, improving data integrity.
This commit is contained in:
Torsten Schulz (local)
2026-01-21 13:22:03 +01:00
parent a21a2314d7
commit 3018b1f2e1
4 changed files with 77 additions and 18 deletions

View File

@@ -512,16 +512,24 @@ async function updateFoodCareExercises() {
return;
}
const courses = await VocabCourse.findAll({
where: { languageId: bisayaLanguage.id },
include: [
{
model: sequelize.models.VocabLanguage,
as: 'nativeLanguage',
attributes: ['name']
}
]
});
const bisayaLanguageId = bisayaLanguage.id;
// Hole alle Bisaya-Kurse mit native language info
const courses = await sequelize.query(
`SELECT
c.id,
c.title,
c.owner_user_id,
c.native_language_id,
nl.name as native_language_name
FROM community.vocab_course c
LEFT JOIN community.vocab_language nl ON c.native_language_id = nl.id
WHERE c.language_id = :bisayaLanguageId`,
{
replacements: { bisayaLanguageId },
type: sequelize.QueryTypes.SELECT
}
);
console.log(`Gefunden: ${courses.length} Bisaya-Kurse\n`);
@@ -530,7 +538,7 @@ async function updateFoodCareExercises() {
for (const course of courses) {
console.log(`📚 Kurs: ${course.title} (ID: ${course.id})`);
const nativeLangName = course.nativeLanguage?.name || 'Deutsch';
const nativeLangName = course.native_language_name || 'Deutsch';
console.log(` Muttersprache: ${nativeLangName}`);
// Finde "Essen & Fürsorge" und "Essen & Trinken" Lektionen
@@ -587,7 +595,7 @@ async function updateFoodCareExercises() {
correctAnswer: 0
}),
explanation: conv.explanation,
createdByUserId: course.ownerUserId || systemUser.id
createdByUserId: course.owner_user_id || systemUser.id
});
totalExercisesCreated++;
@@ -613,7 +621,7 @@ async function updateFoodCareExercises() {
correctAnswer: 0
}),
explanation: conv.explanation,
createdByUserId: course.ownerUserId || systemUser.id
createdByUserId: course.owner_user_id || systemUser.id
});
totalExercisesCreated++;
}
@@ -639,7 +647,7 @@ async function updateFoodCareExercises() {
alternatives: []
}),
explanation: conv.explanation,
createdByUserId: course.ownerUserId || systemUser.id
createdByUserId: course.owner_user_id || systemUser.id
});
totalExercisesCreated++;
}
@@ -668,7 +676,7 @@ async function updateFoodCareExercises() {
correctAnswer: 0
}),
explanation: vocab.explanation,
createdByUserId: course.ownerUserId || systemUser.id
createdByUserId: course.owner_user_id || systemUser.id
});
totalExercisesCreated++;
@@ -694,7 +702,7 @@ async function updateFoodCareExercises() {
correctAnswer: 0
}),
explanation: vocab.explanation,
createdByUserId: course.ownerUserId || systemUser.id
createdByUserId: course.owner_user_id || systemUser.id
});
totalExercisesCreated++;
}