import aiomysql

# 🔑 Configuración de la base de datos
DB_USER = "catia_app_dev"
DB_PASS = "^)Q=voA4[0N/h[8WN2"
DB_HOST = "vmas-dev-mysql03.mysql.database.azure.com"
DB_PORT = 3306
DB_NAME = "data_catastro_logs"

# Pool global
pool: aiomysql.Pool | None = None

async def init_db():
    """Inicializa el pool de conexiones"""
    global pool
    if pool is None:
        pool = await aiomysql.create_pool(
            host=DB_HOST,
            port=DB_PORT,
            user=DB_USER,
            password=DB_PASS,
            db=DB_NAME,
            minsize=1,
            maxsize=10,
            autocommit=True
        )
    return pool

async def get_connection():
    """Obtiene el pool (para usar acquire)"""
    global pool
    if pool is None:
        await init_db()
    return pool

async def test_connection():
    """Ejecuta SELECT 1 para validar conexión"""
    pool = await get_connection()
    async with pool.acquire() as conn:
        async with conn.cursor() as cur:
            await cur.execute("SELECT 1")
            val = await cur.fetchone()
            print("✅ Conexión exitosa:", val[0])
            

async def insertar_conversacion(id_asistente: str, pregunta: str, respuesta: str, usuario: str):
    """
    Inserta una fila en data_catastro_logs.conversaciones
    - id: AUTO_INCREMENT (MySQL lo genera solo)
    - modelo: 'gpt-4-turbo'
    - llegada: 'WEB'
    - fecha_hora: NOW() (timestamp actual en MySQL)
    - input, output, telefono, hilo_conversacion: NULL
    """
    pool = await get_connection()
    query = """
    INSERT INTO data_catastro_logs.conversaciones
    (id_asistente, modelo, llegada, fecha_hora, pregunta, respuesta, input, output, usuario, telefono, hilo_conversacion)
    VALUES
    (%s, 'gpt-4-turbo', 'WEB', NOW(), %s, %s, NULL, NULL, %s, NULL, NULL);
    """
    async with pool.acquire() as conn:
        async with conn.cursor() as cur:
            await cur.execute(query, (id_asistente, pregunta, respuesta, usuario))
            await conn.commit()
            return cur.lastrowid