From 34afe60927f5f9013d855d3edd1e64e36585ec75 Mon Sep 17 00:00:00 2001 From: kianiadee Date: Fri, 29 May 2026 10:32:59 +0300 Subject: [PATCH] Guard day_track call with function-existence check (order-independent deploy) Co-Authored-By: Claude Opus 4.8 --- app/routers/views.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/routers/views.py b/app/routers/views.py index aeb2398..2c89f1c 100644 --- a/app/routers/views.py +++ b/app/routers/views.py @@ -73,12 +73,20 @@ async def _fetch_trips(vehicle_id: int, day: date) -> dict[str, Any]: # Continuous day track (GeoJSON LineString of every fix, in order) so the # frontend can draw one unbroken route under the per-trip coloured # segments — trip splits on reporting gaps no longer look like the - # vehicle teleported. + # vehicle teleported. Guarded by an existence check so the endpoint keeps + # working if the code is deployed before migration 24 lands. + track: Any = None await cur.execute( - "SELECT serve.fn_vehicle_day_track(%s, %s)", (vehicle_id, day) + "SELECT to_regprocedure('serve.fn_vehicle_day_track(bigint, date)') IS NOT NULL" ) - track_row = await cur.fetchone() - payload["day_track"] = track_row[0] if track_row and track_row[0] is not None else None + exists_row = await cur.fetchone() + if exists_row and exists_row[0]: + await cur.execute( + "SELECT serve.fn_vehicle_day_track(%s, %s)", (vehicle_id, day) + ) + track_row = await cur.fetchone() + track = track_row[0] if track_row else None + payload["day_track"] = track return payload