"""Configuración central de la aplicación."""
import os
from dotenv import load_dotenv

load_dotenv()

BASE_DIR = os.path.abspath(os.path.dirname(__file__))


def build_database_uri():
    """Construye la URI de la BD desde variables separadas o desde DATABASE_URL."""
    # 1) Si existe DATABASE_URL completa, se usa directamente
    url = os.environ.get("DATABASE_URL")
    if url:
        return url

    # 2) Si existen las variables separadas (DB_HOST, DB_NAME, DB_USER, DB_PASS), se arma la URI
    host = os.environ.get("DB_HOST")
    name = os.environ.get("DB_NAME")
    user = os.environ.get("DB_USER")
    password = os.environ.get("DB_PASS")

    if host and name and user and password is not None:
        return f"mysql+pymysql://{user}:{password}@{host}/{name}"

    # 3) Fallback local con SQLite
    return f"sqlite:///{os.path.join(BASE_DIR, 'atento.db')}"


class Config:
    
    
    SECRET_KEY = os.environ.get("SECRET_KEY", "dev-secret-cambiar-en-produccion")
    SQLALCHEMY_DATABASE_URI = build_database_uri()
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # 🆕 Manejo robusto de conexiones MySQL en cPanel
    SQLALCHEMY_ENGINE_OPTIONS = {
        "pool_pre_ping": True,      # verifica que la conexión esté viva antes de usarla
        "pool_recycle": 280,         # recicla conexiones cada 280s (antes del timeout de MySQL)
        "pool_size": 5,
        "max_overflow": 10,
    }
    
    
    SECRET_KEY = os.environ.get("SECRET_KEY", "dev-secret-cambiar-en-produccion")

    SQLALCHEMY_DATABASE_URI = build_database_uri()
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY", "")

    MAIL_SERVER = os.environ.get("MAIL_SERVER", "")
    MAIL_PORT = int(os.environ.get("MAIL_PORT", 587))
    MAIL_USE_TLS = os.environ.get("MAIL_USE_TLS", "1") == "1"
    MAIL_USERNAME = os.environ.get("MAIL_USERNAME", "")
    MAIL_PASSWORD = os.environ.get("MAIL_PASSWORD", "")

    BASE_URL = os.environ.get("BASE_URL", "http://localhost:5000")