"""
Database Configuration Module
Loads database credentials from .my.admin.cnf file
"""

import configparser
import os
from typing import Dict

def load_db_config(config_file: str = '.my.admin.cnf') -> Dict[str, str]:
    """
    Load database configuration from .my.admin.cnf file

    Args:
        config_file: Path to config file

    Returns:
        Dictionary with host, user, password, database keys
    """
    # Check if file exists
    if not os.path.exists(config_file):
        raise FileNotFoundError(f"Configuration file not found: {config_file}")

    # Parse INI file
    config = configparser.ConfigParser()
    config.read(config_file)

    # Extract client section
    if not config.has_section('client'):
        raise ValueError("No [client] section found in configuration file")

    db_config = {
        'host': config.get('client', 'host', fallback='localhost'),
        'user': config.get('client', 'user', fallback=''),
        'password': config.get('client', 'password', fallback=''),
        'database': config.get('client', 'database', fallback='')
    }

    # Validate required fields
    required_fields = ['user', 'password', 'database']
    for field in required_fields:
        if not db_config[field]:
            raise ValueError(f"Missing required database config: {field}")

    return db_config
