"""
日本プロ野球予想 — 共通設定
接続情報は環境変数または .env で渡す。コードにパスワードを直書きしない。
"""
from __future__ import annotations

import os

try:
    from dotenv import load_dotenv

    _root = os.path.dirname(os.path.abspath(__file__))
    load_dotenv(os.path.join(_root, ".env"))
except ImportError:
    pass

_DB = os.environ
BASE_DIR = os.path.dirname(os.path.abspath(__file__))


def _get(key: str, default: str | None = None) -> str | None:
    v = _DB.get(key)
    if v is not None and v != "":
        return v
    return default


def _db_password() -> str:
    p = _get("BASEBALL_DB_PASSWORD", "") or ""
    if p:
        return p
    php_path = os.path.join(BASE_DIR, "config", "db_local.php")
    if not os.path.isfile(php_path):
        return ""
    try:
        import subprocess

        r = subprocess.run(
            ["php", "-r", f"echo (require {repr(php_path)})['pass'];"],
            capture_output=True,
            text=True,
            timeout=5,
            check=False,
        )
        return (r.stdout or "").strip()
    except OSError:
        return ""


DB_HOST = _get("BASEBALL_DB_HOST", "localhost")
DB_PORT = int(_get("BASEBALL_DB_PORT", "3306") or "3306")
DB_NAME = _get("BASEBALL_DB_NAME", "baseball_ai")
DB_USER = _get("BASEBALL_DB_USER", "root")
DB_PASSWORD = _db_password()
DB_CHARSET = _get("BASEBALL_DB_CHARSET", "utf8mb4")

LOG_DIR = _get("BASEBALL_LOG_DIR", os.path.join(BASE_DIR, "logs")) or os.path.join(BASE_DIR, "logs")

# ProEyeKyuu 年別CSV（試合結果）
PROEYEKYUU_GAME_CSV_URL = (
    "https://proeyekyuu.com/wp-content/CsvExports/GameResultsEN/game_results_en_{year}.csv"
)
