from pathlib import Path from sqlalchemy import create_engine from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine from sqlalchemy.orm import sessionmaker # Ensure the DB directory exists DB_DIR = Path("/app/storage/db") DB_DIR.mkdir(parents=True, exist_ok=True) # Database URLs SQLALCHEMY_DATABASE_URL = f"sqlite:///{DB_DIR}/db.sqlite" ASYNC_SQLALCHEMY_DATABASE_URL = f"sqlite+aiosqlite:///{DB_DIR}/db.sqlite" # Create engines engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) async_engine = create_async_engine( ASYNC_SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) # Create sessions SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) AsyncSessionLocal = sessionmaker( autocommit=False, autoflush=False, bind=async_engine, class_=AsyncSession, ) # Dependency for FastAPI endpoints async def get_db(): async with AsyncSessionLocal() as session: try: yield session finally: await session.close()