From da05a0e9810eba6ba2e9792ff7efbcda2a612b5c Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 16 Apr 2020 16:29:34 +0200 Subject: [PATCH] maintenance: backpropagate polylines to route entries using pre-1.9.4 format --- lib/Travelynx/Command/maintenance.pm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/Travelynx/Command/maintenance.pm b/lib/Travelynx/Command/maintenance.pm index 8237e33..5965546 100644 --- a/lib/Travelynx/Command/maintenance.pm +++ b/lib/Travelynx/Command/maintenance.pm @@ -143,6 +143,20 @@ sub run { $db->select( 'journeys', [ 'id', 'route' ], { polyline_id => undef } ) ->hashes->each ) { + + # prior to v1.9.4, routes were stored as [["stop1"], ["stop2"], ...]. + # Nowadays, the common format is [["stop1", {}, null], ...]. + # entry[1] is non-empty only while checked in, entry[2] is non-null only + # if the stop is unscheduled or has been cancelled. + # + # Here, we pretened to use the new format, as we're looking for + # matching routes in more recent journeys. + # + # Note that journey->{route} is serialized JSON (i.e., a string). + # It is not deserialized for performance reasons. + $journey->{route} + =~ s/ (?select( 'journeys', [ 'id', 'polyline_id' ],