File size: 1,675 Bytes
50553ea
 
 
 
 
 
 
 
 
 
 
 
 
 
c6cc0f2
 
 
50553ea
 
 
 
 
 
c6cc0f2
 
50553ea
b1eced0
 
 
50553ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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.account import account_router
    app.include_router(account_router, tags=["account"])

    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'])

    from trauma.api.security import security_router
    app.include_router(security_router, tags=['security'])

    from trauma.api.data import facility_router
    app.include_router(facility_router, tags=['facility'])

    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