After_Chido_Api/main.py

44 lines
2.0 KiB
Python

from fastapi import FastAPI
from fastapi.responses import JSONResponse
from api.v1 import users, roles, need_requests, reports, uploads, person_reports, technical_issues, points_of_interest, shelters, auth #, messages
from config.database import init_db
from starlette.middleware.base import BaseHTTPMiddleware
from utils.logging import logger
app = FastAPI(title="Disaster Management API", description="API for managing disaster during these days of ending world.")
# Middleware pour logger les erreurs
class LogErrorsMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request, call_next):
try:
response = await call_next(request)
return response
except Exception as e:
logger.error(f"Auth error: {str(e)}")
return JSONResponse(
status_code=500,
content={"message": "Internal Server Error"}
)
# Ajouter le middleware à l'application
app.add_middleware(LogErrorsMiddleware)
# Include routers
app.include_router(auth.router, prefix="/api/v1/auth", tags=["auth"])
app.include_router(person_reports.router, prefix="/api/v1/person_reports", tags=["person_reports"])
app.include_router(users.router, prefix="/api/v1/users", tags=["users"])
app.include_router(roles.router, prefix="/api/v1/roles", tags=["roles"])
app.include_router(need_requests.router, prefix="/api/v1/needs", tags=["needs"])
app.include_router(reports.router, prefix="/api/v1/reports", tags=["reports"])
#app.include_router(messages.router, prefix="/api/v1/messages", tags=["messages"])
app.include_router(uploads.router, prefix="/api/v1/uploads", tags=["uploads"])
app.include_router(technical_issues.router, prefix="/api/v1/technical_issues", tags=["technical_issues"])
app.include_router(points_of_interest.router, prefix="/api/v1/points_of_interest", tags=["points_of_interest"])
app.include_router(shelters.router, prefix="/api/v1/shelters", tags=["shelters"])
# Initialize database
@app.on_event("startup")
async def startup():
await init_db()