Loading lib/Travelynx/Command/maintenance.pm +0 −88 Original line number Diff line number Diff line Loading @@ -183,94 +183,6 @@ 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 ) { # 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 pretend 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/ (?<! additional ) (?<! cancelled ) "] /", {}, null]/gx; my $ref = $db->select( 'journeys', [ 'id', 'polyline_id' ], { route => $journey->{route}, polyline_id => { '!=', undef }, edited => 0, }, { 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); } } else { while ( my ( $old_name, $new_name ) = each %{ $self->app->renamed_station } ) { $journey->{route} =~ s{"\Q$old_name\E"}{"$new_name"}; } my $ref = $db->select( 'journeys', [ 'id', 'polyline_id' ], { route => $journey->{route}, polyline_id => { '!=', undef }, edited => 0, }, { 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; Loading Loading
lib/Travelynx/Command/maintenance.pm +0 −88 Original line number Diff line number Diff line Loading @@ -183,94 +183,6 @@ 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 ) { # 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 pretend 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/ (?<! additional ) (?<! cancelled ) "] /", {}, null]/gx; my $ref = $db->select( 'journeys', [ 'id', 'polyline_id' ], { route => $journey->{route}, polyline_id => { '!=', undef }, edited => 0, }, { 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); } } else { while ( my ( $old_name, $new_name ) = each %{ $self->app->renamed_station } ) { $journey->{route} =~ s{"\Q$old_name\E"}{"$new_name"}; } my $ref = $db->select( 'journeys', [ 'id', 'polyline_id' ], { route => $journey->{route}, polyline_id => { '!=', undef }, edited => 0, }, { 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; Loading