from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from .database import init_db from .routers.novels import router as novels_router from .routers.outlines import router as outlines_router from .routers.characters import router as characters_router from .routers.chapters import router as chapters_router from .routers.world_setting import router as world_setting_router from .routers.ai_config import router as ai_config_router from .routers.chat import router as chat_router @asynccontextmanager async def lifespan(app: FastAPI): init_db() yield app = FastAPI(title="Noval", version="0.1.0", lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=["http://localhost:5173"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(novels_router) app.include_router(outlines_router) app.include_router(characters_router) app.include_router(chapters_router) app.include_router(world_setting_router) app.include_router(ai_config_router) app.include_router(chat_router) @app.get("/api/health") def health(): return {"status": "ok"}