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:
@@ -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++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user