"""Simple PostgreSQL connectivity smoke-checker."""
import os
import sys
import psycopg2
from psycopg2 import OperationalError


DEFAULT_DSN = os.environ.get(
    "PG_DSN", "postgresql://local-Python:Neo-local-1991125@100.64.0.4:5432/LLZQ-test"
)
DEFAULT_TIMEOUT = max(1, min(int(os.environ.get("PG_CONNECT_TIMEOUT", 10)), 20))


def check_postgres_connection(dsn: str, timeout: int = DEFAULT_TIMEOUT) -> bool:
    """Return True if connection succeeds; print diagnostics otherwise."""
    try:
        conn = psycopg2.connect(dsn, connect_timeout=timeout)
        with conn:
            with conn.cursor() as cur:
                cur.execute("SELECT 1;")
                _ = cur.fetchone()
        print(f"PostgreSQL 连接成功 (timeout={timeout}s)")
        return True
    except OperationalError as exc:
        print("PostgreSQL 连接失败（OperationalError）：", exc)
    except Exception as exc:  # pragma: no cover - defensive
        print("PostgreSQL 连接失败（其他异常）：", exc)

    return False


if __name__ == "__main__":
    dsn = sys.argv[1] if len(sys.argv) > 1 else DEFAULT_DSN
    if not dsn:
        print("缺少 DSN，请传入参数或设置 PG_DSN 环境变量。")
        sys.exit(2)

    ok = check_postgres_connection(dsn)
    if not ok:
        sys.exit(1)
