import { sequelize } from './sequelize.js'; import Match3Level from '../models/match3/level.js'; /** * Aktualisiert existierende Match3-Level mit Standard-Layouts * und neuen Feldern */ async function updateExistingMatch3Levels() { try { console.log('πŸ”§ Aktualisiere existierende Match3-Level...'); // Finde alle existierenden Level ohne boardLayout const existingLevels = await Match3Level.findAll({ where: { boardLayout: null } }); console.log(`πŸ“Š Gefunden: ${existingLevels.length} Level ohne boardLayout`); if (existingLevels.length === 0) { console.log('βœ… Alle Level haben bereits boardLayout'); return; } // Aktualisiere jeden Level mit Standard-Layout for (const level of existingLevels) { const oldBoardSize = level.boardSize || 6; // Erstelle Standard-Layout basierend auf alter boardSize let boardLayout = ''; for (let i = 0; i < oldBoardSize; i++) { for (let j = 0; j < oldBoardSize; j++) { boardLayout += 'x'; } if (i < oldBoardSize - 1) boardLayout += '\n'; } // Aktualisiere den Level mit allen neuen Feldern await level.update({ boardLayout: boardLayout, boardWidth: oldBoardSize, boardHeight: oldBoardSize, // Stelle sicher, dass alle erforderlichen Felder gesetzt sind tileTypes: level.tileTypes || ['gem', 'star', 'heart'], moveLimit: level.moveLimit || 20, isActive: level.isActive !== undefined ? level.isActive : true }); console.log(`πŸ”§ Level ${level.id} aktualisiert: ${oldBoardSize}x${oldBoardSize} β†’ alle neuen Felder gesetzt`); } console.log('βœ… Alle existierenden Level wurden aktualisiert'); } catch (error) { console.error('❌ Fehler beim Aktualisieren der Match3-Level:', error); throw error; } } // FΓΌhre das Skript aus, wenn es direkt aufgerufen wird if (import.meta.url === `file://${process.argv[1]}`) { updateExistingMatch3Levels() .then(() => { console.log('🎯 Match3-Level-Update abgeschlossen'); process.exit(0); }) .catch((error) => { console.error('πŸ’₯ Match3-Level-Update fehlgeschlagen:', error); process.exit(1); }); } export default updateExistingMatch3Levels;