"""
Script de reset BDD — Supprime toutes les données joueurs,
préserve les données persistantes du jeu (config, avatars, packs, niveaux).
"""
import mysql.connector
from python.db_config import DB_CONFIG

RESET_TABLES = [
    "wallet_history",
    "user_cash_pack_purchases",
    "payment_transactions",
    "daily_bonus",
    "arcade_bonus",
    "ad_rewards",
    "user_ball_skins",
    "user_ball_skin_packs",
    "user_avatar_packs",
    "user_challenge_pack",
    "user_weekly_avatars",
    "user_avatars",
    "weekly_progress",
    "daily_progress",
    "leaderboard_entries",
    "recent_runs",
    "level_stats",
    "user_stats",
    "arcade_stats",
    "infinite_stats",
    "progress",
    "user_settings",
    "refresh_tokens",
    "audit_log",
    "wallets",
    "users",
]

AUTO_INCREMENT_TABLES = [
    "users",
    "refresh_tokens",
    "audit_log",
    "recent_runs",
    "leaderboard_entries",
    "payment_transactions",
    "user_cash_pack_purchases",
    "wallet_history",
]

KEEP_TABLES = [
    "app_config",
    "levels_catalog",
    "avatars",
    "avatar_packs",
    "ball_skin_packs",
    "daily_challenges",
    "weekly_rewards",
    "used_weekly_avatars",
    "pack_avatars",
]

def main():
    print("=" * 60)
    print("RESET BDD ROLLERLOGIC - Suppression donnees joueurs")
    print("=" * 60)
    print(f"\nConnexion: {DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}")
    print(f"Tables a vider: {len(RESET_TABLES)}")
    print(f"Tables preservees: {', '.join(KEEP_TABLES)}")
    print()

    confirm = input("Confirmer le reset ? Tapez RESET : ").strip()
    if confirm != "RESET":
        print("Annule.")
        return

    conn = mysql.connector.connect(**DB_CONFIG)
    cursor = conn.cursor()

    try:
        cursor.execute("SET FOREIGN_KEY_CHECKS = 0")

        for table in RESET_TABLES:
            cursor.execute(f"DELETE FROM `{table}`")
            print(f"  Vide: {table} ({cursor.rowcount} lignes)")

        cursor.execute("SET FOREIGN_KEY_CHECKS = 1")

        for table in AUTO_INCREMENT_TABLES:
            cursor.execute(f"ALTER TABLE `{table}` AUTO_INCREMENT = 1")

        conn.commit()
        print(f"\nRESET TERMINE - {len(RESET_TABLES)} tables videes.")
        print("Tables preservees intactes.")

    except Exception as e:
        conn.rollback()
        print(f"\nERREUR: {e}")
        raise
    finally:
        cursor.close()
        conn.close()

if __name__ == "__main__":
    main()
