72 lines
1.7 KiB
Python
Executable File
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()
|