# -*- coding: utf-8 -*-
"""
config_sqlite_api.py
Gerencia a URL da API SQLite conforme o ambiente (local/produção)
"""

import os
import json
import socket
from pathlib import Path

class SQLiteAPIConfig:
    """
    Detecta automaticamente o ambiente e fornece a URL correta da API SQLite.
    
    Prioridade de configuração:
    1. Variável de ambiente SQLITE_API_URL
    2. Arquivo config_api.json local
    3. URL padrão de desenvolvimento
    """
    
    def __init__(self):
        self.environment = self._detect_environment()
        self.url = self._get_api_url()
    
    def _detect_environment(self):
        """Detecta se está em ambiente de produção ou desenvolvimento"""
        
        # 1. Verificar variável de ambiente explícita
        env = os.getenv('ENVIRONMENT', '').lower()
        if env in ['producao', 'production', 'prod']:
            return 'producao'
        if env in ['desenvolvimento', 'development', 'dev']:
            return 'desenvolvimento'
        
        # 2. Verificar se é Linux (geralmente produção)
        sistema = os.uname().sysname if hasattr(os, 'uname') else 'Windows'
        if sistema == 'Linux':
            return 'producao'
        
        # 3. Padrão: desenvolvimento (Windows/Mac local)
        return 'desenvolvimento'
    
    def _get_api_url(self):
        """Obtém a URL da API SQLite"""
        
        # 1. Variável de ambiente tem prioridade máxima
        env_url = os.getenv('SQLITE_API_URL')
        if env_url:
            print(f"✓ URL da API SQLite (via variável SQLITE_API_URL): {env_url}")
            return env_url
        
        # 2. Tentar ler do arquivo config_api.json
        config_file = Path(__file__).parent / 'config_api.json'
        if config_file.exists():
            try:
                with open(config_file, 'r', encoding='utf-8') as f:
                    config = json.load(f)
                
                url = config.get(self.environment, {}).get('sqlite_api_url')
                if url:
                    print(f"✓ URL da API SQLite ({self.environment}): {url}")
                    return url
            except Exception as e:
                print(f"⚠ Erro ao ler config_api.json: {e}")
        
        # 3. URL padrão de desenvolvimento
        default_url = "http://localhost/projetos/rex/api.php"
        print(f"⚠ Usando URL padrão de desenvolvimento: {default_url}")
        return default_url
    
    def __str__(self):
        return f"Ambiente: {self.environment} | URL: {self.url}"


# Instância global
sqlite_config = SQLiteAPIConfig()

def obter_url_api():
    """Retorna a URL da API SQLite"""
    return sqlite_config.url

def obter_ambiente():
    """Retorna o ambiente detectado"""
    return sqlite_config.environment


if __name__ == '__main__':
    print("🔧 SQLite API Configuration")
    print("=" * 50)
    print(sqlite_config)
    print("=" * 50)
    print("\nPara customizar em produção:")
    print("1. Edite config_api.json e defina 'producao.sqlite_api_url'")
    print("2. Ou defina variável de ambiente: export SQLITE_API_URL='...'")
    print("3. Ou defina: export ENVIRONMENT='producao'")
