from sqlalchemy import create_engine from sqlalchemy.orm import declarative_base, sessionmaker from .config import get_settings settings = get_settings() Base = declarative_base() connect_args = {"check_same_thread": False} if settings.is_sqlite else {} engine = create_engine(settings.database_url, future=True, connect_args=connect_args) SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False, expire_on_commit=False) def init_db() -> None: if settings.sqlite_directory is not None: settings.sqlite_directory.mkdir(parents=True, exist_ok=True) from . import models Base.metadata.create_all(bind=engine) def get_session(): session = SessionLocal() try: yield session finally: session.close()