File: //opt/trading-bot/db.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, Session
from config import settings
from models import Base
import logging
logger = logging.getLogger(__name__)
# Create engine with pooling
engine = create_engine(
settings.database_url,
pool_size=10,
max_overflow=20,
pool_recycle=3600,
pool_pre_ping=True
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def init_db():
"""Ensure all tables exist in the database."""
try:
Base.metadata.create_all(bind=engine)
logger.info("Database initialized successfully.")
except Exception as e:
logger.error(f"Error initializing database: {e}")
raise
def get_db() -> Session:
"""Dependency for getting DB session."""
db = SessionLocal()
try:
yield db
finally:
db.close()