import os from pathlib import Path from urllib.parse import quote from dotenv import load_dotenv BACKEND_DIR = Path(__file__).resolve().parent PROJECT_ROOT = BACKEND_DIR.parent load_dotenv(PROJECT_ROOT / ".env", override=False) load_dotenv(BACKEND_DIR / ".env", override=True) def get_required_env(name: str) -> str: value = str(os.getenv(name, "")).strip() if not value: raise RuntimeError(f"Missing required environment variable: {name}") return value def get_database_url() -> str: direct = str(os.getenv("DATABASE_URL", "")).strip() if direct: return direct user = str(os.getenv("POSTGRES_USER", "teeoff_admin")).strip() password = str(os.getenv("POSTGRES_PASSWORD", "")).strip() database = str(os.getenv("POSTGRES_DB", "teeoff")).strip() host = str(os.getenv("POSTGRES_HOST", "db")).strip() port = str(os.getenv("POSTGRES_PORT", "5432")).strip() if not password: raise RuntimeError( "Missing database credentials. Set DATABASE_URL or POSTGRES_PASSWORD in your environment." ) return f"postgresql://{user}:{quote(password)}@{host}:{port}/{database}"