Files
serv_benchmark/backend/app/db/session.py
Gilles Soulier c67befc549 addon
2026-01-05 16:08:01 +01:00

72 lines
1.7 KiB
Python
Executable File

"""
Linux BenchTools - Database Sessions
"""
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, Session
from app.core.config import settings
# ========================================
# DATABASE PRINCIPALE (Benchmarks)
# ========================================
# Create main engine
engine_main = create_engine(
settings.DATABASE_URL,
connect_args={"check_same_thread": False} if "sqlite" in settings.DATABASE_URL else {},
echo=False, # Set to True for SQL query logging during development
)
# Create SessionLocal class for main DB
SessionLocalMain = sessionmaker(autocommit=False, autoflush=False, bind=engine_main)
# Backward compatibility
engine = engine_main
SessionLocal = SessionLocalMain
# ========================================
# DATABASE PÉRIPHÉRIQUES
# ========================================
# Create peripherals engine
engine_peripherals = create_engine(
settings.PERIPHERALS_DB_URL,
connect_args={"check_same_thread": False} if "sqlite" in settings.PERIPHERALS_DB_URL else {},
echo=False,
)
# Create SessionLocal class for peripherals DB
SessionLocalPeripherals = sessionmaker(
autocommit=False,
autoflush=False,
bind=engine_peripherals
)
# ========================================
# DEPENDENCY INJECTION
# ========================================
def get_db() -> Session:
"""
Main database session dependency for FastAPI (benchmarks, devices)
"""
db = SessionLocalMain()
try:
yield db
finally:
db.close()
def get_peripherals_db() -> Session:
"""
Peripherals database session dependency for FastAPI
"""
db = SessionLocalPeripherals()
try:
yield db
finally:
db.close()