import os from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from starlette.exceptions import HTTPException as StarletteHTTPException from starlette.staticfiles import StaticFiles from trauma.core.config import settings from trauma.core.wrappers import TraumaResponseWrapper, ErrorTraumaResponse def create_app() -> FastAPI: app = FastAPI() from trauma.api.chat import chat_router app.include_router(chat_router, tags=['chat']) from trauma.api.message import message_router app.include_router(message_router, tags=['message']) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], ) static_directory = os.path.join(settings.BASE_DIR, 'static') if not os.path.exists(static_directory): os.makedirs(static_directory) app.mount( '/static', StaticFiles(directory='static'), ) @app.exception_handler(StarletteHTTPException) async def http_exception_handler(_, exc): return TraumaResponseWrapper( data=None, successful=False, error=ErrorTraumaResponse(message=str(exc.detail)) ).response(exc.status_code) @app.get("/") async def read_root(): return {"message": "Hello world!"} return app