"""
setup_mysql.py — Inicialización de base de datos para Perfumados en producción (cPanel)
Ejecutar UNA VEZ después de subir los archivos.
"""
import os
import sys

print("=== Setup Perfumados — Inicialización de BD ===")

# Forzar DATABASE_URL antes de importar la app
# (las variables de cPanel no están disponibles al ejecutar scripts manualmente)
os.environ['DATABASE_URL'] = 'mysql+pymysql://medi2009_perfumados:Perfumados2026%40@localhost/medi2009_perfumados'
os.environ['SECRET_KEY'] = 'perfumados-clave-segura-2024'

print(f"   BD: {os.environ['DATABASE_URL'][:55]}...")

# Instalar dependencias
os.system(f"{sys.executable} -m pip install flask flask_sqlalchemy werkzeug PyMySQL --quiet")
print("✅ Dependencias instaladas")

from app import app, db, init_db

with app.app_context():
    db.create_all()
    print("✅ Tablas creadas / actualizadas en la base de datos")

    # Migración: agregar columnas nuevas si no existen (para BD ya existente)
    try:
        from sqlalchemy import text
        with db.engine.connect() as conn:
            # device_fingerprint en asistencia
            conn.execute(text(
                "ALTER TABLE asistencia ADD COLUMN device_fingerprint VARCHAR(512) NULL"
            ))
            conn.execute(text(
                "ALTER TABLE asistencia ADD COLUMN device_info VARCHAR(255) NULL"
            ))
            conn.commit()
            print("✅ Columnas de anti-fraude agregadas a asistencia")
    except Exception as e:
        if 'Duplicate column' in str(e) or 'already exists' in str(e):
            print("ℹ️  Columnas de asistencia ya existían (OK)")
        else:
            print(f"ℹ️  Migración asistencia: {e}")

    init_db()
    print("✅ Usuario admin configurado")

print()
print("=== Setup completado ===")
print("   Usuario: admin@perfumados.cl")
print("   Clave:   admin123")
print("   Ahora reinicia la aplicación en cPanel.")
