SmaFit-FastApi / main.py
JustParadis's picture
Deploy to Hugging Face without chroma_db
abf6602
from contextlib import asynccontextmanager
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from routers import users, chatbot, admin
@asynccontextmanager
async def lifespan(app: FastAPI):
yield
app = FastAPI(lifespan=lifespan)
app.add_exception_handler(admin.ExceptionRequiresRedirect, admin.redirect_handler)
import os
ALLOWED_ORIGINS = os.getenv(
"ALLOWED_ORIGINS",
"http://localhost:3000,http://127.0.0.1:3000,http://localhost:5000,http://localhost:5173"
).split(",")
app.add_middleware(
CORSMiddleware,
allow_origins=ALLOWED_ORIGINS,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(users.router)
app.include_router(chatbot.router)
app.include_router(admin.router)
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/health")
async def health_check():
try:
from database import engine
from sqlmodel import text
import cloudinary_storage # This runs the configuration
import cloudinary.api
status_dict = {"status": "healthy"}
# Test Database
with engine.connect() as conn:
conn.execute(text("SELECT 1"))
status_dict["database"] = "connected"
# Test Cloudinary
cloudinary_response = cloudinary.api.ping()
if "status" in cloudinary_response and cloudinary_response["status"] == "ok":
status_dict["cloudinary"] = "connected"
else:
status_dict["cloudinary"] = "failed"
return status_dict
except Exception as e:
raise HTTPException(status_code=503, detail=f"Service connection error: {str(e)}")
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}