f1tness_parser/backend/app/main.py

39 lines
1.1 KiB
Python

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"}