"""FastAPI app.""" from contextlib import asynccontextmanager from fastapi import FastAPI from ..core.config import Settings from ..storage.db import PersistenceService from .routes import cars, health, tasks @asynccontextmanager async def lifespan(app: FastAPI): """Жизненный цикл.""" persistence: PersistenceService = app.state.persistence persistence.create_tables() yield def create_app(settings: Settings | None = None) -> FastAPI: _settings = settings or Settings() app = FastAPI( title="IAAI Scraper API", description="REST API для управления задачами скрапинга IAAI и просмотра данных", version="1.0.0", lifespan=lifespan, ) app.state.settings = _settings app.state.persistence = PersistenceService(_settings) app.include_router(health.router, tags=["health"]) app.include_router(cars.router, prefix="/api/v1", tags=["cars"]) app.include_router(tasks.router, prefix="/api/v1", tags=["tasks"]) return app # Для запуска через uvicorn. app = create_app()