diff --git a/app/db.py b/app/db.py new file mode 100644 index 0000000..d951c76 --- /dev/null +++ b/app/db.py @@ -0,0 +1,27 @@ +from collections.abc import Generator +from sqlalchemy import create_engine +from sqlalchemy.orm import DeclarativeBase, Session, sessionmaker + +from app.core import get_settings + +settings = get_settings() +engine = create_engine(settings.database_url, pool_pre_ping=True) +SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False) + + +class Base(DeclarativeBase): + pass + + +def get_db() -> Generator[Session, None, None]: + db = SessionLocal() + try: + yield db + finally: + db.close() + + +def init_db() -> None: + from app import models # noqa: F401 + + Base.metadata.create_all(bind=engine)