diff options
Diffstat (limited to 'lib/Travelynx/Model')
-rwxr-xr-x | lib/Travelynx/Model/Journeys.pm | 17 | ||||
-rw-r--r-- | lib/Travelynx/Model/Stations.pm | 20 |
2 files changed, 22 insertions, 15 deletions
diff --git a/lib/Travelynx/Model/Journeys.pm b/lib/Travelynx/Model/Journeys.pm index d9e17f0..2bbc0bc 100755 --- a/lib/Travelynx/Model/Journeys.pm +++ b/lib/Travelynx/Model/Journeys.pm @@ -34,19 +34,6 @@ sub epoch_to_dt { ); } -sub grep_unknown_stations { - my ( $self, @stations ) = @_; - - my @unknown_stations; - for my $station (@stations) { - my $station_info = $self->{stations}->get_by_name($station); - if ( not $station_info ) { - push( @unknown_stations, $station ); - } - } - return @unknown_stations; -} - sub new { my ( $class, %opt ) = @_; @@ -917,8 +904,8 @@ sub sanity_check { } if ( $journey->{edited} & 0x0010 and not $lax ) { my @unknown_stations - = $self->grep_unknown_stations( map { $_->[0] } - @{ $journey->{route} } ); + = $self->{stations} + ->grep_unknown( map { $_->[0] } @{ $journey->{route} } ); if (@unknown_stations) { return 'Unbekannte Station(en): ' . join( ', ', @unknown_stations ); } diff --git a/lib/Travelynx/Model/Stations.pm b/lib/Travelynx/Model/Stations.pm index 6c898b1..62504d3 100644 --- a/lib/Travelynx/Model/Stations.pm +++ b/lib/Travelynx/Model/Stations.pm @@ -62,6 +62,16 @@ sub get_by_name { } # Slow +sub get_by_names { + my ( $self, @names ) = @_; + + my @ret + = $self->{pg}->db->select( 'stations', '*', { name => { '=', \@names } } ) + ->hashes->each; + return @ret; +} + +# Slow sub get_by_ds100 { my ( $self, $ds100, %opt ) = @_; @@ -85,4 +95,14 @@ sub search { // $self->get_by_name( $identifier, %opt ); } +# Slow +sub grep_unknown { + my ( $self, @stations ) = @_; + + my %station = map { $_->{name} => 1 } $self->get_by_names(@stations); + my @unknown_stations = grep { not $station{$_} } @stations; + + return @unknown_stations; +} + 1; |