| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- from __future__ import annotations
- from collections.abc import Generator
- from sqlalchemy import create_engine
- from sqlalchemy.orm import Session, sessionmaker
- from app.core.config import settings
- if settings.database_dialect.strip().lower() == "sqlite":
- settings.sqlite_file.parent.mkdir(parents=True, exist_ok=True)
- connect_args = (
- {"check_same_thread": False}
- if settings.database_dialect.strip().lower() == "sqlite"
- else {}
- )
- engine = create_engine(
- settings.database_url,
- echo=settings.database_echo,
- pool_pre_ping=True,
- connect_args=connect_args,
- )
- SessionLocal = sessionmaker(
- bind=engine,
- class_=Session,
- autoflush=False,
- autocommit=False,
- expire_on_commit=False,
- )
- def get_db() -> Generator[Session, None, None]:
- db = SessionLocal()
- try:
- yield db
- finally:
- db.close()
|