import logging from contextlib import asynccontextmanager from fastapi import FastAPI from app.api.v1.router import api_router from app.config import settings from app.core.database.connection import create_engine, create_session_factory # TODO: Replace level with settings value logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) @asynccontextmanager async def lifespan(app: FastAPI): # Schema is managed by Alembic: run `alembic upgrade head` before starting the app engine = create_engine(settings.get_postgres_database_url()) app.state.session_factory = create_session_factory(engine) yield await engine.dispose() # TODO: (#ToLearn) Почитать про lifespan в FastAPI приложениях app = FastAPI( title="Fitness Parser API", description="API for parsing fitness training data from various sources", version="0.1.0", lifespan=lifespan, ) # Include routers app.include_router(api_router, prefix="/api/v1") @app.get("/") async def root(): return {"message": "Fitness Parser API", "version": "0.1.0"}