import platform
import logging
from typing import Dict, Any, Optional

logger = logging.getLogger(__name__)

def get_unified_db_config(socket_path: Optional[str] = None) -> Dict[str, Any]:
    """
    [AI_DOC]
    Bu fonksiyon isletim sistemine (Windows/macOS) gore dinamik olarak 
    veritabani baglanti ayarlarini (host, port, user, pass, socket vb.) uretir.
    Eski sistemdeki daginik db_windows.py, db_macos_arm.py dosyalarinin birlesimidir.
    [/AI_DOC]
    """
    # Ortak (Base) Veritabani Ayarlari
    config: Dict[str, Any] = {
        "host": "127.0.0.1",
        "user": "root",
        "password": "root",  
        "database": "Goldr",
        "autocommit": False,
        "charset": "utf8mb4",
        "pool_name": "golder_pool",
        "pool_size": 10,
        "pool_reset_session": True,
        "allow_local_infile": True,
    }

    system = platform.system()
    machine = platform.machine().lower()

    if system == "Windows":
        # Windows Embedded MariaDB Ayarlari
        config["port"] = 3308
        config["auth_plugin"] = "mysql_native_password"
        logger.debug("Veritabani yapilandirmasi Windows (Port 3308) icin ayarlandi.")
        
    elif system == "Darwin":
        # macOS Homebrew MySQL Ayarlari
        config["port"] = 3306
        
        # Intel Mac'lerde sifre genelde bos birakilir, ARM'da root olabilir
        # Guvenlik icin fallback yapisi eklendi.
        if machine == "x86_64":
            config["password"] = ""
            
        if socket_path:
            config["unix_socket"] = socket_path
            logger.debug(f"Veritabani yapilandirmasi macOS icin ayarlandi. Soket: {socket_path}")
        else:
            logger.warning("macOS ortaminda soket yolu (unix_socket) belirtilmedi!")
            
    else:
        logger.warning(f"Desteklenmeyen isletim sistemi: {system}. Varsayilan ayarlar kullaniliyor.")

    return config




