import { sequelize } from './sequelize.js';
import Match3TileType from '../models/match3/tileType.js';

async function initializeMatch3TileTypes() {
  try {
    console.log('🚀 Initialisiere Match3 Tile-Typen...');
    
    // Synchronisiere das TileType-Modell
    await Match3TileType.sync({ alter: true });
    console.log('✅ TileType-Modell synchronisiert');
    
    // Standard-Tile-Typen definieren
    const defaultTileTypes = [
      {
        name: 'gem',
        displayName: 'Juwel',
        symbol: '💎',
        color: '#ff6b6b',
        rarity: 'common',
        points: 10
      },
      {
        name: 'star',
        displayName: 'Stern',
        symbol: '⭐',
        color: '#feca57',
        rarity: 'common',
        points: 15
      },
      {
        name: 'heart',
        displayName: 'Herz',
        symbol: '❤️',
        color: '#ff9ff3',
        rarity: 'common',
        points: 12
      },
      {
        name: 'diamond',
        displayName: 'Diamant',
        symbol: '🔷',
        color: '#54a0ff',
        rarity: 'uncommon',
        points: 20
      },
      {
        name: 'circle',
        displayName: 'Kreis',
        symbol: '⭕',
        color: '#5f27cd',
        rarity: 'uncommon',
        points: 18
      },
      {
        name: 'square',
        displayName: 'Quadrat',
        symbol: '🟦',
        color: '#00d2d3',
        rarity: 'rare',
        points: 25
      },
      {
        name: 'crown',
        displayName: 'Krone',
        symbol: '👑',
        color: '#ff9f43',
        rarity: 'epic',
        points: 35
      },
      {
        name: 'rainbow',
        displayName: 'Regenbogen',
        symbol: '🌈',
        color: '#ff6348',
        rarity: 'legendary',
        points: 50
      }
    ];
    
          // Tile-Typen erstellen oder aktualisieren
      for (const tileType of defaultTileTypes) {
        const [tileTypeInstance, created] = await Match3TileType.findOrCreate({
          where: { name: tileType.name },
          defaults: tileType
        });
        
        if (created) {
          console.log(`✅ Tile-Typ "${tileType.displayName}" erstellt`);
        } else {
          // Aktualisiere bestehende Tile-Typen
          await Match3TileType.update(tileType, {
            where: { name: tileType.name }
          });
          console.log(`🔄 Tile-Typ "${tileType.displayName}" aktualisiert`);
        }
      }
    
    console.log('🎉 Alle Match3 Tile-Typen erfolgreich initialisiert!');
    
  } catch (error) {
    console.error('❌ Fehler beim Initialisieren der Match3 Tile-Typen:', error);
    throw error;
  }
}

// Führe die Initialisierung aus, wenn das Skript direkt aufgerufen wird
if (import.meta.url === `file://${process.argv[1]}`) {
  initializeMatch3TileTypes()
    .then(() => {
      console.log('✅ Tile-Typen-Initialisierung abgeschlossen');
      process.exit(0);
    })
    .catch((error) => {
      console.error('❌ Fehler bei der Tile-Typen-Initialisierung:', error);
      process.exit(1);
    });
}

export default initializeMatch3TileTypes;
