diff --git a/backend/scripts/update-family-conversations-exercises.js b/backend/scripts/update-family-conversations-exercises.js index 747b591..bac468f 100755 --- a/backend/scripts/update-family-conversations-exercises.js +++ b/backend/scripts/update-family-conversations-exercises.js @@ -12,8 +12,6 @@ import { sequelize } from '../utils/sequelize.js'; import VocabCourseLesson from '../models/community/vocab_course_lesson.js'; import VocabGrammarExercise from '../models/community/vocab_grammar_exercise.js'; import VocabCourse from '../models/community/vocab_course.js'; -import VocabLanguage from '../models/community/vocab_language.js'; -import VocabGrammarExerciseType from '../models/community/vocab_grammar_exercise_type.js'; import User from '../models/community/user.js'; import crypto from 'crypto'; import bcrypt from 'bcryptjs'; @@ -425,31 +423,34 @@ async function updateFamilyConversationExercises() { console.log('✅ Datenbankverbindung erfolgreich hergestellt.\n'); const systemUser = await findOrCreateSystemUser(); - const bisayaLanguage = await VocabLanguage.findOne({ where: { name: 'Bisaya' } }); + + // Finde Bisaya-Sprache mit SQL + const [bisayaLangResult] = await sequelize.query( + `SELECT id FROM community.vocab_language WHERE name = 'Bisaya' LIMIT 1`, + { type: sequelize.QueryTypes.SELECT } + ); - if (!bisayaLanguage) { + if (!bisayaLangResult) { console.error('❌ Bisaya-Sprache nicht gefunden.'); return; } - // Hole alle Bisaya-Kurse - const courses = await VocabCourse.findAll({ - where: { languageId: bisayaLanguage.id }, - attributes: ['id', 'title', 'nativeLanguageId'] - }); + const bisayaLanguageId = bisayaLangResult.id; - // Hole native language info für jeden Kurs - const coursesWithNativeLang = await Promise.all( - courses.map(async (course) => { - let nativeLanguage = null; - if (course.nativeLanguageId) { - nativeLanguage = await VocabLanguage.findByPk(course.nativeLanguageId); - } - return { - ...course.get({ plain: true }), - nativeLanguage: nativeLanguage ? nativeLanguage.get({ plain: true }) : null - }; - }) + // Hole alle Bisaya-Kurse mit native language info + const courses = await sequelize.query( + `SELECT + c.id, + c.title, + 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`); @@ -457,11 +458,11 @@ async function updateFamilyConversationExercises() { let totalExercisesCreated = 0; let totalLessonsProcessed = 0; - for (const course of coursesWithNativeLang) { + for (const course of courses) { console.log(`📖 Kurs: ${course.title} (ID: ${course.id})`); // Finde native language name - const nativeLanguageName = course.nativeLanguage?.name || 'Deutsch'; + const nativeLanguageName = course.native_language_name || 'Deutsch'; console.log(` Muttersprache: ${nativeLanguageName}`); // Finde "Familien-Gespräche" Lektion