""" Tool_OCR - Database Connection Management SQLAlchemy setup with async support """ from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from app.core.config import settings # Create database engine engine = create_engine( settings.database_url, pool_pre_ping=True, # Enable connection health checks pool_size=10, max_overflow=20, pool_recycle=3600, # Recycle connections every hour pool_timeout=30, # Connection timeout connect_args={ 'connect_timeout': 10, 'read_timeout': 30, 'write_timeout': 30, }, echo=False, # Set to True for SQL query logging ) # Create session factory SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # Base class for all models Base = declarative_base() # Dependency to get database session def get_db(): """ Database session dependency for FastAPI endpoints Usage: @app.get("/endpoint") def endpoint(db: Session = Depends(get_db)): # Use db session here """ db = SessionLocal() try: yield db finally: db.close()