# utils/database.py from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.pool import QueuePool import logging logger = logging.getLogger(__name__) def get_db_engine(database_url: str): """Create database engine with connection pooling""" if database_url.startswith('sqlite'): # SQLite configuration engine = create_engine( database_url, connect_args={"check_same_thread": False}, echo=False ) else: # PostgreSQL configuration with connection pooling engine = create_engine( database_url, poolclass=QueuePool, pool_size=10, max_overflow=20, pool_pre_ping=True, echo=False ) logger.info(f"Database engine created for: {database_url.split('@')[0]}@...") return engine def get_session_local(engine): """Create session factory""" return sessionmaker(autocommit=False, autoflush=False, bind=engine)