Nye-TeeOff/backend/env_config.py

37 lines
1.1 KiB
Python

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}"