generated from Grigo/AndroidTemplate
offline track
This commit is contained in:
+30
-1
@@ -72,6 +72,15 @@ class TrackPointsBody(BaseModel):
|
||||
points: list[TrackPoint] = Field(default_factory=list)
|
||||
|
||||
|
||||
class TrackSyncBody(BaseModel):
|
||||
device_id: str
|
||||
track_id: Optional[int] = None
|
||||
started_at: Optional[float] = None
|
||||
points: list[TrackPoint] = Field(default_factory=list)
|
||||
finish: bool = False
|
||||
label: Optional[str] = None
|
||||
|
||||
|
||||
class CommandBody(BaseModel):
|
||||
from_device_id: str
|
||||
to_device_id: str
|
||||
@@ -193,6 +202,26 @@ def tracks_finish(
|
||||
raise HTTPException(400, detail=str(e)) from e
|
||||
|
||||
|
||||
@app.post("/api/tracks/sync")
|
||||
def tracks_sync(
|
||||
body: TrackSyncBody,
|
||||
x_lora_client: Optional[str] = Header(None, alias=ANDROID_CLIENT_HEADER),
|
||||
):
|
||||
_require_android(x_lora_client)
|
||||
try:
|
||||
points = [p.model_dump(exclude_none=True) for p in body.points]
|
||||
return storage.sync_track(
|
||||
body.device_id,
|
||||
points,
|
||||
track_id=body.track_id,
|
||||
started_at=body.started_at,
|
||||
finish=body.finish,
|
||||
label=body.label,
|
||||
)
|
||||
except ValueError as e:
|
||||
raise HTTPException(400, detail=str(e)) from e
|
||||
|
||||
|
||||
@app.get("/api/tracks")
|
||||
def tracks_list(
|
||||
device_id: Optional[str] = None,
|
||||
@@ -379,7 +408,7 @@ def health():
|
||||
return {
|
||||
"ok": status["db_ok"],
|
||||
"ts": time.time(),
|
||||
"api_build": "2026-06-16i",
|
||||
"api_build": "2026-06-19a",
|
||||
**status,
|
||||
**elevation_status(),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user