brestok commited on
Commit
b1eced0
·
1 Parent(s): 97743c1

add facility

Browse files
trauma/__init__.py CHANGED
@@ -24,6 +24,9 @@ def create_app() -> FastAPI:
24
  from trauma.api.security import security_router
25
  app.include_router(security_router, tags=['security'])
26
 
 
 
 
27
  app.add_middleware(
28
  CORSMiddleware,
29
  allow_origins=["*"],
 
24
  from trauma.api.security import security_router
25
  app.include_router(security_router, tags=['security'])
26
 
27
+ from trauma.api.data import facility_router
28
+ app.include_router(facility_router, tags=['facility'])
29
+
30
  app.add_middleware(
31
  CORSMiddleware,
32
  allow_origins=["*"],
trauma/api/data/__init__.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ from fastapi.routing import APIRouter
2
+
3
+ facility_router = APIRouter(
4
+ prefix="/api/facility", tags=["chat"]
5
+ )
6
+
7
+ from . import views
trauma/api/data/{prepare_data.py → data/prepare_data.py} RENAMED
File without changes
trauma/api/data/{shorted_data.csv → data/shorted_data.csv} RENAMED
File without changes
trauma/api/data/db_requests.py ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import HTTPException
2
+
3
+ from trauma.api.data.model import EntityModel
4
+ from trauma.core.config import settings
5
+
6
+
7
+ async def get_facility_by_id(facility_id: str) -> EntityModel:
8
+ facility = await settings.DB_CLIENT.entities.find_one({"id": facility_id})
9
+ if not facility:
10
+ raise HTTPException(status_code=404, detail="Country with specified id doesn't exists.")
11
+ return EntityModel.from_mongo(facility)
12
+
13
+
14
+ async def get_all_model_obj() -> list[EntityModel]:
15
+ sort_v = -1
16
+ objects = await settings.DB_CLIENT.entities.find().sort("_id", sort_v).to_list(length=None)
17
+ return objects
trauma/api/data/schemas.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pydantic import BaseModel
2
+
3
+ from trauma.api.common.dto import Paging
4
+ from trauma.api.data.model import EntityModel
5
+ from trauma.core.wrappers import TraumaResponseWrapper
6
+
7
+
8
+ class AllFacilitiesResponse(BaseModel):
9
+ paging: Paging
10
+ data: list[EntityModel]
11
+
12
+ class AllFacilitiesWrapper(TraumaResponseWrapper[AllFacilitiesResponse]):
13
+ pass
trauma/api/data/views.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import Depends
2
+
3
+ from trauma.api.account.dto import AccountType
4
+ from trauma.api.account.model import AccountModel
5
+ from trauma.api.common.dto import Paging
6
+ from trauma.api.data import facility_router
7
+ from trauma.api.data.db_requests import get_facility_by_id, get_all_model_obj
8
+ from trauma.api.data.model import EntityModel
9
+ from trauma.api.data.schemas import AllFacilitiesWrapper, AllFacilitiesResponse
10
+ from trauma.core.security import PermissionDependency
11
+ from trauma.core.wrappers import TraumaResponseWrapper
12
+
13
+
14
+ @facility_router.get('/all')
15
+ async def get_all_countries(
16
+ _: AccountModel = Depends(PermissionDependency([AccountType.Admin, AccountType.User]))
17
+ ) -> AllFacilitiesWrapper:
18
+ all_facilities = await get_all_model_obj()
19
+ response = AllFacilitiesResponse(
20
+ paging=Paging(pageSize=len(all_facilities), pageIndex=0, totalCount=len(all_facilities)),
21
+ data=all_facilities
22
+ )
23
+ return AllFacilitiesWrapper(data=response)
24
+
25
+
26
+ @facility_router.get('/{facilityId}')
27
+ async def get_country(
28
+ facilityId: str,
29
+ _: AccountModel = Depends(PermissionDependency([AccountType.Admin, AccountType.User]))
30
+ ) -> TraumaResponseWrapper[EntityModel]:
31
+ facility = await get_facility_by_id(facilityId)
32
+ return TraumaResponseWrapper(data=facility)