from fastapi import FastAPI, Request, HTTPException from fastapi.responses import JSONResponse from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.gzip import GZipMiddleware from fuware.core.config import get_app_settings from fuware import __version__ from fuware.routes import router import uvicorn settings = get_app_settings() description = f""" fuware is a web application for managing your hours items and tracking them. """ # event.listen(models.User.__table__, 'after_create', initialize_table) app = FastAPI( title="Fuware", description=description, version=__version__, docs_url=settings.DOCS_URL, redoc_url=settings.REDOC_URL ) app.add_middleware(GZipMiddleware, minimum_size=1000) if not settings.PRODUCTION: allowed_origins = ["http://localhost:3000"] app.add_middleware( CORSMiddleware, allow_origins=allowed_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.exception_handler(HTTPException) async def unicorn_exception_handler(request: Request, exc: HTTPException): return JSONResponse( status_code=exc.status_code, content={"status": exc.status_code, "data": exc.detail}, ) def api_routers(): app.include_router(router) api_routers() # app.include_router(authR.authRouter) # app.include_router(userR.userRouter) def main(): uvicorn.run("app:app", host="0.0.0.0", port=settings.API_PORT, reload=True, workers=1, forwarded_allow_ips="*") if __name__ == "__main__": main()