from __future__ import annotations import os from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker def _env(name: str, default: str) -> str: value = os.getenv(name) return value if value else default def build_database_url() -> str: host = _env("POSTGRES_HOST", "10.10.10.167") port = _env("POSTGRES_PORT", "5432") db = _env("POSTGRES_DB", "devops_portal") user = _env("POSTGRES_USER", "devops_portal") password = _env("POSTGRES_PASSWORD", "change-me") return f"postgresql+psycopg://{user}:{password}@{host}:{port}/{db}" DATABASE_URL = _env("DATABASE_URL", build_database_url()) engine = create_engine(DATABASE_URL, pool_pre_ping=True) SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False) def get_db(): db = SessionLocal() try: yield db finally: db.close()