from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.gzip import GZipMiddleware from fastapi.responses import ORJSONResponse from fastapi.staticfiles import StaticFiles from starlette.responses import JSONResponse import routers from utils.auto_include_routers import auto_include_routers from utils.exceptions import ObjectNotFoundException origins = ["http://localhost:3000"] app = FastAPI( separate_input_output_schemas=True, default_response_class=ORJSONResponse, root_path="/api", ) app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.add_middleware( GZipMiddleware, minimum_size=1_000, ) @app.exception_handler(ObjectNotFoundException) async def unicorn_exception_handler(request: Request, exc: ObjectNotFoundException): return JSONResponse(status_code=404, content={"detail": exc.name}) auto_include_routers(app, routers, True) app.mount("/static", StaticFiles(directory="static"), name="static")