#!/usr/bin/env python3
"""
Inicializador do servidor MCP Databases configurado para reutilizar o .env do projeto Laravel.

Ele garante que:
1. As variáveis do .env raiz sejam carregadas (incluindo as credenciais de homologação)
2. Os aliases esperados pelo pacote (DB_NAME, DB_USER) existam mesmo que o Laravel use outros nomes
3. O diretório clonado de mcp-databases esteja presente no PYTHONPATH antes de importar o servidor
"""

from __future__ import annotations

import os
import sys
from pathlib import Path

from dotenv import load_dotenv

PROJECT_ROOT = Path(__file__).resolve().parent
ENV_PATH = PROJECT_ROOT / ".env"


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


def bootstrap() -> None:
    """Carrega o ambiente e aciona o servidor MCP Databases."""
    if ENV_PATH.exists():
        load_dotenv(ENV_PATH)

    # Garante compatibilidade entre o .env Laravel e o servidor MCP
    _ensure_env_var("DB_NAME", ["DB_DATABASE"])
    _ensure_env_var("DB_USER", ["DB_USERNAME"])

    # Usa o clone local da biblioteca para evitar depender da cópia em site-packages
    mcp_clone = PROJECT_ROOT / ".mcpenv" / "mcp-databases"
    if mcp_clone.exists():
        sys.path.insert(0, str(mcp_clone))

    from mcp_databases import server as mcp_server

    mcp_server.main()


if __name__ == "__main__":
    bootstrap()

