#!/usr/bin/env python3
"""
Ajoute les avatars beta_testeur à la base de données.
Ces avatars seront automatiquement attribués aux joueurs qui s'inscrivent
pendant le premier mois après le lancement (période beta).
"""

import mysql.connector
from python.db_config import DB_CONFIG

def main():
    conn = mysql.connector.connect(**DB_CONFIG)
    cursor = conn.cursor(dictionary=True)

    print("=" * 70)
    print("AJOUT DES AVATARS BETA TESTEUR")
    print("=" * 70)

    # Liste des avatars à ajouter
    avatars_to_add = [
        {
            'code': 'beta-testeur-01',
            'category': 'recompense',
            'file_path': 'beta_testeur/beta_test_1.png',
            'price': 0,
            'unlock_condition': '{"type": "beta_tester"}',
            'display_order': 100
        },
        {
            'code': 'beta-testeur-02',
            'category': 'recompense',
            'file_path': 'beta_testeur/beta_test_2.png',
            'price': 0,
            'unlock_condition': '{"type": "beta_tester"}',
            'display_order': 101
        },
        {
            'code': 'beta-testeur-03',
            'category': 'recompense',
            'file_path': 'beta_testeur/beta_test_3.png',
            'price': 0,
            'unlock_condition': '{"type": "beta_tester"}',
            'display_order': 102
        }
    ]

    print(f"\nNombre d'avatars à ajouter : {len(avatars_to_add)}")
    print()

    added_count = 0
    skipped_count = 0

    for avatar in avatars_to_add:
        # Vérifier si l'avatar existe déjà
        cursor.execute(
            'SELECT id, code FROM avatars WHERE code = %s',
            (avatar['code'],)
        )
        existing = cursor.fetchone()

        if existing:
            print(f"⚠️  Avatar '{avatar['code']}' existe déjà (ID: {existing['id']}) - IGNORÉ")
            skipped_count += 1
        else:
            # Insérer l'avatar
            cursor.execute('''
                INSERT INTO avatars (code, category, file_path, price, unlock_condition, display_order)
                VALUES (%s, %s, %s, %s, %s, %s)
            ''', (
                avatar['code'],
                avatar['category'],
                avatar['file_path'],
                avatar['price'],
                avatar['unlock_condition'],
                avatar['display_order']
            ))
            
            avatar_id = cursor.lastrowid
            print(f"✅ Avatar '{avatar['code']}' ajouté (ID: {avatar_id})")
            print(f"   └─ Fichier: {avatar['file_path']}")
            added_count += 1

    # Commit les changements
    conn.commit()

    print()
    print("=" * 70)
    print("RÉSUMÉ")
    print("=" * 70)
    print(f"✅ Avatars ajoutés    : {added_count}")
    print(f"⚠️  Avatars ignorés   : {skipped_count}")
    print(f"📊 Total traité      : {len(avatars_to_add)}")

    # Vérification finale
    print()
    print("=" * 70)
    print("VÉRIFICATION")
    print("=" * 70)
    cursor.execute('''
        SELECT id, code, category, file_path, unlock_condition 
        FROM avatars 
        WHERE code LIKE 'beta-testeur%'
        ORDER BY code
    ''')
    
    beta_avatars = cursor.fetchall()
    print(f"\nAvatars beta_testeur dans la base : {len(beta_avatars)}")
    for av in beta_avatars:
        print(f"  • ID {av['id']:3d} - {av['code']:20s} → {av['file_path']}")
        print(f"           Category: {av['category']}, Condition: {av['unlock_condition']}")

    cursor.close()
    conn.close()

    print()
    print("=" * 70)
    print("✅ MIGRATION TERMINÉE")
    print("=" * 70)
    print()
    print("ℹ️  Ces avatars seront automatiquement attribués aux joueurs")
    print("   qui s'inscrivent dans le 1er mois après le lancement.")
    print()

if __name__ == "__main__":
    try:
        main()
    except mysql.connector.Error as err:
        print()
        print("=" * 70)
        print("❌ ERREUR MySQL")
        print("=" * 70)
        print(f"Code erreur: {err.errno}")
        print(f"Message: {err.msg}")
        print()
        exit(1)
    except Exception as e:
        print()
        print("=" * 70)
        print("❌ ERREUR")
        print("=" * 70)
        print(f"{type(e).__name__}: {e}")
        print()
        exit(1)
