41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from fastapi import FastAPI, Request
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from app import __version__
|
|
from app.api.v1 import api_router
|
|
from app.api.v1 import health
|
|
from app.core.config import settings
|
|
from app.middlewares.tenant import TenantHeaderMiddleware
|
|
from shared.exceptions import AppError
|
|
|
|
|
|
def create_app():
|
|
app = FastAPI(
|
|
title="Torbat Workspace",
|
|
version=__version__,
|
|
description="Enterprise work management platform",
|
|
)
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=settings.cors_origin_list,
|
|
allow_credentials=False,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
app.add_middleware(TenantHeaderMiddleware)
|
|
|
|
@app.exception_handler(AppError)
|
|
async def handle(request: Request, exc: AppError):
|
|
return JSONResponse(
|
|
status_code=exc.status_code,
|
|
content={"error": {"code": exc.error_code, "message": exc.message, "details": exc.details}},
|
|
)
|
|
|
|
app.include_router(health.router)
|
|
app.include_router(api_router, prefix=settings.api_v1_prefix)
|
|
return app
|
|
|
|
|
|
app = create_app()
|