You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

117 line
3.1 KiB

  1. from fastapi import APIRouter
  2. from typing import List
  3. from ..schemas.reslevis import (
  4. BuildingItem, PlanItem, ZoneItem, GatewayItem, TrackerItem,
  5. OperatorItem, SubjectItem, AlarmItem, TrackItem
  6. )
  7. from ..logica_reslevis.gateway import GatewayJsonRepository
  8. from ..schemas.reslevis import GatewayItem
  9. from fastapi import HTTPException
  10. gateway_repo = GatewayJsonRepository()
  11. router = APIRouter()
  12. @router.get("/getBuildings", response_model=List[BuildingItem])
  13. def getBuildings():
  14. return []
  15. @router.post("/postBuilding")
  16. def postBuilding(item: BuildingItem):
  17. return {"message": "OK"}
  18. @router.get("/getPlans", response_model=List[PlanItem])
  19. def getPlans():
  20. return []
  21. @router.post("/postPlan")
  22. def postPlan(item: PlanItem):
  23. return {"message": "OK"}
  24. @router.get("/getZones", response_model=List[ZoneItem])
  25. def getZones():
  26. return []
  27. @router.post("/postZone")
  28. def postZone(item: ZoneItem):
  29. return {"message": "OK"}
  30. @router.get("/getGateways", response_model=List[GatewayItem])
  31. def getGateways():
  32. return gateway_repo.list()
  33. @router.post("/postGateway")
  34. def postGateway(item: GatewayItem):
  35. try:
  36. gateway_repo.add(item)
  37. return {"message": "OK"}
  38. except ValueError as e:
  39. raise HTTPException(status_code=409, detail=str(e))
  40. except Exception as e:
  41. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  42. @router.put("/updateGateway")
  43. def updateGateway(item: GatewayItem):
  44. try:
  45. gateway_repo.update(item)
  46. return {"message": "OK"}
  47. except ValueError as e:
  48. msg = str(e)
  49. if "non trovato" in msg:
  50. raise HTTPException(status_code=404, detail=msg)
  51. raise HTTPException(status_code=409, detail=msg)
  52. except Exception as e:
  53. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  54. @router.delete("/removeGateway/{gateway_id}")
  55. def removeGateway(gateway_id: str):
  56. try:
  57. gateway_repo.remove(gateway_id)
  58. return {"message": "OK"}
  59. except ValueError as e:
  60. raise HTTPException(status_code=404, detail=str(e))
  61. except Exception as e:
  62. raise HTTPException(status_code=500, detail=f"Errore interno: {e}")
  63. @router.get("/getTrackers", response_model=List[TrackerItem])
  64. def getTrackers():
  65. return []
  66. @router.post("/postTracker")
  67. def postTracker(item: TrackerItem):
  68. return {"message": "OK"}
  69. @router.get("/getOperators", response_model=List[OperatorItem])
  70. def getOperators():
  71. return []
  72. @router.post("/postOperator")
  73. def postOperator(item: OperatorItem):
  74. return {"message": "OK"}
  75. @router.get("/getSubjects", response_model=List[SubjectItem])
  76. def getSubjects():
  77. return []
  78. @router.post("/postSubject")
  79. def postSubject(item: SubjectItem):
  80. return {"message": "OK"}
  81. @router.get("/getAlarms", response_model=List[AlarmItem])
  82. def getAlarms():
  83. return []
  84. @router.post("/postAlarm")
  85. def postAlarm(item: AlarmItem):
  86. return {"message": "OK"}
  87. @router.get("/getTracks", response_model=List[TrackItem])
  88. def getTracks():
  89. return []
  90. @router.post("/postTrack")
  91. def postTrack(item: TrackItem):
  92. return {"message": "OK"}