from contextlib import asynccontextmanager from dotenv import load_dotenv load_dotenv() from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.core.database import init_db, Base from app.api.books import router as books_router from app.api.chat import router as chat_router from app.api.models import router as models_router from app.models.book import Book, Chapter, Segment from app.models.chat import Conversation, Message from app.models.ai_model import AiModel @asynccontextmanager async def lifespan(app: FastAPI): await init_db() yield app = FastAPI(title="BookMate", version="0.1.0", lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(books_router, prefix="/api") app.include_router(chat_router, prefix="/api") app.include_router(models_router, prefix="/api") @app.get("/api/health") async def health(): return {"status": "ok"}