From 37cb85e60df74ff54546a4b012b0f587a93abac0 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sun, 4 Dec 2022 20:57:27 +0100 Subject: integritycheck: also check station names in routes --- lib/Travelynx/Command/integritycheck.pm | 57 ++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-) (limited to 'lib/Travelynx/Command') diff --git a/lib/Travelynx/Command/integritycheck.pm b/lib/Travelynx/Command/integritycheck.pm index fc7345a..774ef6f 100644 --- a/lib/Travelynx/Command/integritycheck.pm +++ b/lib/Travelynx/Command/integritycheck.pm @@ -11,11 +11,8 @@ use Travel::Status::DE::IRIS::Stations; sub run { my ($self) = @_; - my %station; - - for my $s ( Travel::Status::DE::IRIS::Stations::get_stations() ) { - $station{ $s->[2] } = 1; - } + my %station + = map { $_->[2] => 1 } Travel::Status::DE::IRIS::Stations::get_stations(); my @journey_stations; @@ -33,12 +30,62 @@ sub run { } @journey_stations = List::Util::uniq @journey_stations; + my $found = 0; for my $eva (@journey_stations) { if ( not $station{$eva} ) { + if ( not $found ) { + say +'Journeys in the travelynx database contain the following unknown EVA IDs.'; + say '------------8<----------'; + say 'Travel::Status::DE::IRIS v' + . $Travel::Status::DE::IRIS::Stations::VERSION; + $found = 1; + } say $eva; } } + if ($found) { + say '------------8<----------'; + say ''; + $found = 0; + } + + %station + = map { $_->[1] => 1 } Travel::Status::DE::IRIS::Stations::get_stations(); + my %notified; + my $rename = $self->app->renamed_station; + + $res = $self->app->pg->db->select( 'journeys', [ 'route', 'edited' ] ); + for my $j ( $res->expand->hashes->each ) { + if ( $j->{edited} & 0x0010 ) { + next; + } + for my $stop ( @{ $j->{route} // [] } ) { + my $stop_name = $stop->[0]; + if ( $rename->{$stop_name} ) { + $stop_name = $rename->{$stop_name}; + } + if ( not $station{$stop_name} and not $notified{$stop_name} ) { + if ( not $found ) { + say +'Journeys in the travelynx database contain the following unknown route entries.'; + say 'Note that this check ignores manual route entries.'; + say 'All reports refer to routes obtained via HAFAS/IRIS.'; + say '------------8<----------'; + say 'Travel::Status::DE::IRIS v' + . $Travel::Status::DE::IRIS::Stations::VERSION; + $found = 1; + } + say $stop_name; + $notified{$stop_name} = 1; + } + } + } + if ($found) { + say '------------8<----------'; + say ''; + } } 1; -- cgit v1.2.3