diff --git a/backend/app/database.py b/backend/app/database.py new file mode 100644 index 0000000..815741b --- /dev/null +++ b/backend/app/database.py @@ -0,0 +1,23 @@ +from collections.abc import Generator + +from sqlalchemy import create_engine +from sqlalchemy.orm import DeclarativeBase, Session, sessionmaker + +from .config import settings + + +class Base(DeclarativeBase): + """Базовый класс SQLAlchemy-моделей.""" + + +engine = create_engine(settings.database_url, pool_pre_ping=True) +SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False) + + +def get_db() -> Generator[Session, None, None]: + """Открывает сессию БД для одного HTTP-запроса.""" + db = SessionLocal() + try: + yield db + finally: + db.close()