import { sequelize } from './sequelize.js';
import Match3UserProgress from '../models/match3/userProgress.js';

/**
 * Korrigiert alle ungültigen currentLevel-Werte in der Match3-Datenbank
 */
async function fixMatch3Data() {
  try {
    console.log('🔧 Starte Korrektur der Match3-Daten...');
    
    // Finde alle UserProgress-Einträge mit ungültigen currentLevel-Werten
    const invalidEntries = await Match3UserProgress.findAll({
      where: {
        currentLevel: {
          [sequelize.Op.or]: [
            { [sequelize.Op.lt]: 1 },
            { [sequelize.Op.gt]: 1000 }
          ]
        }
      }
    });
    
    console.log(`📊 Gefunden: ${invalidEntries.length} ungültige Einträge`);
    
    if (invalidEntries.length === 0) {
      console.log('✅ Alle currentLevel-Werte sind bereits korrekt');
      return;
    }
    
    // Korrigiere jeden ungültigen Eintrag
    for (const entry of invalidEntries) {
      const oldValue = entry.currentLevel;
      const correctValue = entry.levelsCompleted + 1;
      
      console.log(`🔧 Korrigiere User ${entry.userId}: currentLevel ${oldValue} → ${correctValue}`);
      
      await entry.update({
        currentLevel: correctValue
      });
    }
    
    console.log('✅ Alle ungültigen currentLevel-Werte wurden korrigiert');
    
  } catch (error) {
    console.error('❌ Fehler beim Korrigieren der Match3-Daten:', error);
    throw error;
  }
}

// Führe das Skript aus, wenn es direkt aufgerufen wird
if (import.meta.url === `file://${process.argv[1]}`) {
  fixMatch3Data()
    .then(() => {
      console.log('🎯 Match3-Datenkorrektur abgeschlossen');
      process.exit(0);
    })
    .catch((error) => {
      console.error('💥 Match3-Datenkorrektur fehlgeschlagen:', error);
      process.exit(1);
    });
}

export default fixMatch3Data;
