| import logging |
|
|
| from fastapi import FastAPI |
| from fastapi.responses import JSONResponse |
| from fastapi.middleware.cors import CORSMiddleware |
|
|
| from backend.api.routes import health, query, repo, upload |
| from backend.core.config import settings |
| from backend.core.logging import configure_logging |
|
|
| configure_logging() |
| logger = logging.getLogger(__name__) |
|
|
| app = FastAPI(title=settings.app_name) |
|
|
| app.add_middleware( |
| CORSMiddleware, |
| allow_origins=["*"], |
| allow_credentials=True, |
| allow_methods=["*"], |
| allow_headers=["*"], |
| ) |
|
|
| app.include_router(health.router, prefix=settings.api_prefix) |
| app.include_router(upload.router, prefix=settings.api_prefix) |
| app.include_router(repo.router, prefix=settings.api_prefix) |
| app.include_router(query.router, prefix=settings.api_prefix) |
|
|
|
|
| @app.exception_handler(Exception) |
| async def unhandled_exception_handler(request, exc: Exception): |
| logger.exception("Unhandled request error: %s %s", request.method, request.url) |
| detail = str(exc) if settings.debug_errors else "Internal Server Error" |
| return JSONResponse(status_code=500, content={"detail": detail}) |
|
|
|
|
| @app.get("/") |
| def root() -> dict[str, str]: |
| return {"message": settings.app_name, "docs": "/docs"} |
|
|