#!/usr/bin/env python3 # INFRA:DEAD rds -- AWS RDS is gone. Any file referencing rds_connect.py or this hostname is stale and must be ported. """Shared database connection helper — resolves env vars, DATABASE_URL.""" import os from urllib.parse import urlparse def _resolve_params() -> dict: """Resolve connection parameters from env, preferring DATABASE_URL.""" du = os.environ.get("DATABASE_URL", "").strip() if du: p = urlparse(du) params = { "host": p.hostname or "localhost", "port": p.port or 5432, "user": p.username or "postgres", "password": p.password or "", "dbname": p.path.lstrip("/") if p.path else "postgres", "sslmode": "prefer", } # Extract sslmode from query string if p.query: for q in p.query.split("&"): if "=" in q: k, v = q.split("=", 1) if k == "sslmode": params["sslmode"] = v return params host = os.environ.get("RDS_HOST", os.environ.get("PGHOST", "100.92.88.64")) port = int(os.environ.get("RDS_PORT", os.environ.get("PGPORT", "5432"))) user = os.environ.get("RDS_USER", os.environ.get("PGUSER", "postgres")) dbname = os.environ.get("RDS_DB", os.environ.get("RDS_DBNAME", os.environ.get("PGDATABASE", "postgres"))) sslmode = os.environ.get("RDS_SSLMODE", os.environ.get("PGSSLMODE", "prefer")) password = os.environ.get("RDS_PASSWORD", os.environ.get("PGPASSWORD", "")) return {"host": host, "port": port, "user": user, "password": password, "dbname": dbname, "sslmode": sslmode} def connect_rds(**overrides): """Connect to the database. Override any resolved param via kwargs. Resolution order per field: 1. explicit **override 2. DATABASE_URL env var 3. individual PG/RDS env vars 4. built-in defaults (localhost) """ p = _resolve_params() p.update(overrides) import psycopg2 kw = {k: p[k] for k in ("host", "port", "user", "password", "dbname", "sslmode")} if "connect_timeout" in p: kw["connect_timeout"] = p["connect_timeout"] return psycopg2.connect(**kw)