import os
from pathlib import Path


def _load_dotenv():
    """从项目根目录 .env 文件加载环境变量（不覆盖已有环境变量）"""
    # 向上查找 .env：从当前文件位置 → djapi/ → 项目根目录
    base_dir = Path(__file__).resolve().parent.parent
    dotenv_path = base_dir / '.env'

    if not dotenv_path.exists():
        return

    with open(dotenv_path) as f:
        for line in f:
            line = line.strip()
            if not line or line.startswith('#') or '=' not in line:
                continue
            key, _, value = line.partition('=')
            key = key.strip()
            value = value.strip().strip('"').strip("'")
            if key and key not in os.environ:
                os.environ[key] = value


# 模块导入时自动加载 .env
_load_dotenv()


def get_env(key, default=None, required=False):
    """
    从环境变量读取配置值。

    Args:
        key: 环境变量名
        default: 默认值
        required: 是否必须。若为 True 且变量不存在，抛出 ValueError。

    Returns:
        环境变量值或默认值
    """
    value = os.getenv(key, default)
    if required and (value is None or value == ''):
        raise ValueError(f'缺少必须的环境变量: {key}')
    return value


def get_env_bool(key, default=False):
    """读取布尔型环境变量"""
    val = os.getenv(key, str(default)).lower()
    return val in ('true', '1', 'yes')
