37 lines
1.1 KiB
Python
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}"
|