/**
 * Configuración de conexión al backend
 * Detecta automáticamente el entorno y usa la URL correcta
 */

export function getBackendUrl(): string {
    // 1. Si existe variable de entorno, úsala (override manual)
    if (import.meta.env.VITE_BACKEND_URL) {
        return import.meta.env.VITE_BACKEND_URL;
    }

    // 2. Detección automática basada en dónde corre el código
    if (typeof window !== 'undefined') {
        // CLIENTE (Browser): usar la URL pública del backend
        // En local: http://localhost:8000
        // En prod: mismo dominio o dominio específico
        const hostname = window.location.hostname;

        if (hostname === 'localhost' || hostname === '127.0.0.1') {
            return 'http://localhost:8000/api';
        }

        // En producción, asumir que el backend está en el mismo dominio /api
        // o usar un subdominio específico
        return `${window.location.protocol}//${hostname}/api`;
    } else {
        // SERVIDOR (SvelteKit SSR/Endpoints): usar URL interna
        // En Docker: http://backend:8000
        // En local: http://127.0.0.1:8000 (IPv4 explícito)

        // Detectar si estamos en Docker por hostname
        const isDocker = process.env.HOSTNAME?.includes('docker');

        if (isDocker) {
            return 'http://backend:8000/api';
        }

        // En desarrollo local, usar IPv4 explícito para evitar problemas con IPv6
        return 'http://127.0.0.1:8000/api';
    }
}

export const BACKEND_URL = getBackendUrl();

// Helper para logs
export function logBackendConfig() {
    console.log('[Backend Config]', {
        url: BACKEND_URL,
        isServer: typeof window === 'undefined',
    });
}
