Spaces:
Sleeping
Sleeping
File size: 1,365 Bytes
7f99b5c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | import uvicorn
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from config import settings
from db import init_db
from api.moderation import router as moderation_router
from api.analytics import router as analytics_router
@asynccontextmanager
async def lifespan(app: FastAPI):
# Initialize the database and create tables on startup
await init_db()
yield
app = FastAPI(
title=settings.PROJECT_NAME,
description="Backend API for Reddit Guardian AI Moderation Copilot",
version="1.0.0",
lifespan=lifespan
)
# Configure CORS
# Devvit runs on Reddit domains, but HTTP requests can originate from Reddit's servers.
# To allow playtesting and local dev, we open up CORS.
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Include API Routers
app.include_router(moderation_router)
app.include_router(analytics_router)
@app.get("/") ## Health check endpoint
async def root():
return {
"status": "online",
"project": settings.PROJECT_NAME,
"message": "Guardian is watching and protecting."
}
if __name__ == "__main__":
uvicorn.run(
"main:app",
host=settings.HOST,
port=settings.PORT,
reload=True
)
|