# utils/database.py """Database utilities .... This module provides classes and functions for: - .... - .... - .... """ import logging from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.pool import QueuePool 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: " f"{database_url.split('@')[0]}@...") return engine def get_session_local(engine): """Create session factory.""" return sessionmaker(autocommit=False, autoflush=False, bind=engine)