LS8's picture
Upload folder using huggingface_hub
847db01 verified
from contextlib import asynccontextmanager
from pathlib import Path
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
from src.api.router import api_router
from src.api.schemas.common import HealthResponse
from src.config import settings
from src.db.session import init_db
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup: ensure directories exist and init DB
settings.raw_dir.mkdir(parents=True, exist_ok=True)
settings.processed_dir.mkdir(parents=True, exist_ok=True)
settings.chroma_db_path.mkdir(parents=True, exist_ok=True)
settings.sqlite_db_path.parent.mkdir(parents=True, exist_ok=True)
await init_db()
yield
app = FastAPI(
title="Natural Hygiene RAG API",
description="Retrieval-Augmented Generation system for Natural Hygiene literature",
version="0.1.0",
lifespan=lifespan,
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(api_router)
# Serve static dashboard
_static_dir = Path(__file__).parent / "static"
@app.get("/", include_in_schema=False)
async def dashboard():
return FileResponse(_static_dir / "index.html")
app.mount("/static", StaticFiles(directory=str(_static_dir)), name="static")
@app.get("/health", response_model=HealthResponse, tags=["Health"])
async def health_check():
return HealthResponse()