f1tness_parser/app/main.py
2025-10-12 16:27:47 +03:00

46 lines
1.3 KiB
Python

import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from app.api.v1.api import api_router
from app.api.v1.web import web_router
from app.config import settings
from migrations.runner import MigrationRunner
# 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):
logging.info(f"\n\n{settings.get_postgres_database_url()}")
runner = MigrationRunner(settings.get_postgres_database_url())
await runner.run_migrations()
yield
# 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,
)
app.mount("/static", StaticFiles(directory="app/static"), name="static")
templates = Jinja2Templates(directory="app/templates")
# Include routers
app.include_router(api_router, prefix="/api/v1")
app.include_router(web_router, prefix="/app")
@app.get("/")
async def root():
return {"message": "Fitness Parser API", "version": "0.1.0"}