Files
saas_backend/app/config/database.py
T
2026-08-31 20:39:41 -04:00

48 lines
1.1 KiB
Python

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
from sqlalchemy.exc import SQLAlchemyError
from fastapi import HTTPException
from .settings import settings
import logging
logger = logging.getLogger(__name__)
DATABASE_URL = settings.DATABASE_URL
connect_args = {"connect_timeout": 10}
if settings.DB_SSL:
connect_args["sslmode"] = "require"
engine = create_engine(
DATABASE_URL,
pool_pre_ping=True,
pool_recycle=300,
pool_size=20,
max_overflow=30,
pool_timeout=30,
pool_reset_on_return='commit',
connect_args=connect_args,
echo=False,
future=True
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
def get_db():
db = SessionLocal()
try:
yield db
except HTTPException:
raise
except SQLAlchemyError as e:
logger.error(f"Database error: {e}")
db.rollback()
raise
except Exception as e:
logger.error(f"Unexpected database session error: {e}")
db.rollback()
raise
finally:
db.close()