Ver a proveniência

sync_core test

sync_core
Lorenzo Pollutri há 6 dias
ascendente
cometimento
468980024b
1 ficheiros alterados com 45 adições e 3 eliminações
  1. +45
    -3
      routes/reslevis.py

+ 45
- 3
routes/reslevis.py Ver ficheiro

@@ -1,4 +1,6 @@
from fastapi import APIRouter, Depends, HTTPException
from fastapi import APIRouter, Depends, HTTPException, Request
import httpx
import config_env
from typing import List

from schemas.reslevis import (
@@ -27,7 +29,35 @@ from logica_reslevis.tracker_zone import TrackerZoneJsonRepository

from security import get_current_user

router = APIRouter()
#CORE SYNC
CORE_BASE_URL = config_env.CORE_API_URL.rstrip("/")
CORE_TIMEOUT = 2.0 # secondi

async def sync_core_get(request: Request) -> None:
if request.method != "GET":
return

repo = CORE_GET_REPO_BY_PATH.get(request.url.path)
if repo is None:
return

try:
async with httpx.AsyncClient(timeout=CORE_TIMEOUT) as client:
resp = await client.get(
f"{CORE_BASE_URL}{request.url.path}",
params=request.query_params,
)

if 200 <= resp.status_code < 300:
data = resp.json()
if isinstance(data, list):
repo._write_all(data) # aggiorna i file locali
except (httpx.RequestError, ValueError):
# CORE giù o risposta non valida -> uso il file locale
pass


router = APIRouter(dependencies=[Depends(sync_core_get)])

gateway_repo = GatewayJsonRepository()
building_repo = BuildingJsonRepository()
@@ -40,6 +70,18 @@ alarm_repo = AlarmJsonRepository()
track_repo = TrackJsonRepository()
tracker_zone_repo = TrackerZoneJsonRepository()

CORE_GET_REPO_BY_PATH = {
"/reslevis/getGateways": gateway_repo,
"/reslevis/getBuildings": building_repo,
"/reslevis/getFloors": floor_repo,
"/reslevis/getZones": zone_repo,
"/reslevis/getTrackers": tracker_repo,
"/reslevis/getTrackerZones": tracker_zone_repo,
"/reslevis/getTracks": track_repo,
"/reslevis/getOperators": operator_repo,
"/reslevis/getSubjects": subject_repo,
}


@router.get(
"/getGateways",
@@ -103,10 +145,10 @@ def removeBuilding(building_id: str):
tags=["Reslevis"],
dependencies=[Depends(get_current_user)],
)

def getFloors():
return floor_repo.list()


@router.post("/postFloor", tags=["Reslevis"], dependencies=[Depends(get_current_user)])
def postFloor(item: FloorItem):
floor_repo.add(item)


Carregando…
Cancelar
Guardar