From 7e92e6b5d454ca61c77ed4ee217d179fc0038459 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 30 Jan 2020 18:06:04 +0100 Subject: [PATCH] retroactively add polylines to non-polyline journeys --- lib/Travelynx/Command/maintenance.pm | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/lib/Travelynx/Command/maintenance.pm b/lib/Travelynx/Command/maintenance.pm index 5cbf982..a70d42a 100644 --- a/lib/Travelynx/Command/maintenance.pm +++ b/lib/Travelynx/Command/maintenance.pm @@ -128,6 +128,50 @@ sub run { } $tx->commit; + + # Add estimated polylines to journeys logged before 2020-01-28 + + $tx = $db->begin; + + say 'Adding polylines to journeys logged before 2020-01-28'; + my $no_polyline + = $db->select( 'journeys', 'count(*) as count', { polyline_id => undef } ) + ->hash; + say "Checking $no_polyline->{count} journeys ..."; + + for my $journey ( + $db->select( 'journeys', [ 'id', 'route' ], { polyline_id => undef } ) + ->hashes->each ) + { + my $ref = $db->select( + 'journeys', + [ 'id', 'polyline_id' ], + { + route => $journey->{route}, + polyline_id => { '!=', undef } + }, + { limit => 1 } + )->hash; + if ($ref) { + my $rows = $db->update( + 'journeys', + { polyline_id => $ref->{polyline_id} }, + { id => $journey->{id} } + )->rows; + if ( $rows != 1 ) { + say STDERR +"Database update returned $rows rows, expected 1. Rollback and abort."; + exit(1); + } + } + } + + my $remaining + = $db->select( 'journeys', 'count(*) as count', { polyline_id => undef } ) + ->hash; + say "Done! Remaining journeys without polyline: " . $remaining->{count}; + + $tx->commit; } 1;