#!/usr/bin/env python3
"""
Script de teste para listar tabelas do banco de homologação usando o servidor MCP.
"""

import os
import sys
from pathlib import Path
from dotenv import load_dotenv

# Configuração do ambiente
PROJECT_ROOT = Path(__file__).resolve().parent
ENV_PATH = PROJECT_ROOT / ".env"

if ENV_PATH.exists():
    load_dotenv(ENV_PATH)

# Garante compatibilidade entre o .env Laravel e o servidor MCP
def _ensure_env_var(primary: str, fallbacks: list[str]) -> None:
    """Define a variável `primary` usando os fallbacks caso ainda não exista."""
    if os.getenv(primary):
        return
    for candidate in fallbacks:
        value = os.getenv(candidate)
        if value:
            os.environ[primary] = value
            break

_ensure_env_var("DB_NAME", ["DB_DATABASE"])
_ensure_env_var("DB_USER", ["DB_USERNAME"])

# Adiciona o clone do mcp-databases ao PYTHONPATH
mcp_clone = PROJECT_ROOT / ".mcpenv" / "mcp-databases"
if mcp_clone.exists():
    sys.path.insert(0, str(mcp_clone))

# Importa e usa o módulo do MCP
from mcp_databases.tools.list_tables import list_tables

# Configuração de conexão MySQL baseada no .env
conn_params = {
    "server": os.getenv("DB_HOST", "127.0.0.1"),
    "database": os.getenv("DB_DATABASE", "homologacao"),
    "user": os.getenv("DB_USERNAME", "dev"),
    "password": os.getenv("DB_PASSWORD", ""),
    "port": os.getenv("DB_PORT", "3306")
}

print("=" * 60)
print("Testando conexão com banco de homologação")
print("=" * 60)
print(f"Host: {conn_params['server']}")
print(f"Database: {conn_params['database']}")
print(f"User: {conn_params['user']}")
print(f"Port: {conn_params['port']}")
print("=" * 60)
print()

try:
    # Chama a função list_tables do servidor MCP
    result = list_tables({
        "db_type": "mysql",
        "conn_params": conn_params
    })
    
    print("✅ Conexão bem-sucedida!")
    print()
    print("Tabelas encontradas no banco de homologação:")
    print("-" * 60)
    
    if isinstance(result, dict) and "tables" in result:
        tables = result["tables"]
    elif isinstance(result, list):
        tables = result
    else:
        tables = [result] if result else []
    
    if tables:
        for i, table in enumerate(tables, 1):
            if isinstance(table, dict):
                table_name = table.get("name", table.get("table_name", str(table)))
            else:
                table_name = str(table)
            print(f"{i:3d}. {table_name}")
        print()
        print(f"Total: {len(tables)} tabela(s)")
    else:
        print("Nenhuma tabela encontrada ou resultado inesperado:")
        print(result)
        
except Exception as e:
    print(f"❌ Erro ao listar tabelas: {e}")
    import traceback
    traceback.print_exc()
    sys.exit(1)

