diff options
Diffstat (limited to 'lib/Travelynx')
| -rw-r--r-- | lib/Travelynx/Command/work.pm | 14 | ||||
| -rw-r--r-- | lib/Travelynx/Model/Stations.pm | 5 | 
2 files changed, 11 insertions, 8 deletions
| diff --git a/lib/Travelynx/Command/work.pm b/lib/Travelynx/Command/work.pm index b4b7656..2b01cb2 100644 --- a/lib/Travelynx/Command/work.pm +++ b/lib/Travelynx/Command/work.pm @@ -197,13 +197,15 @@ sub run {  						for my $stopover ( $journey->stopovers ) {  							if ( not defined $stopover->stop->{eva} ) { -								my $stop -								  = $self->app->stations->get_by_external_id( -									external_id => $stopover->stop->id, -									motis       => $entry->{backend_name}, -								  ); -								$stopover->stop->{eva} = $stop->{eva}; +								# Looks like MOTIS / transitous station IDs can change after the fact. +								# So let's be safe rather than sorry, even if this causes way too many calls to the slow path +								# (Stations::get_by_external_id uses string lookups). +								# This function call implicitly sets $stopover->stop->{eva} for MOTIS backends. +								$self->app->stations->add_or_update( +									stop  => $stopover->stop, +									motis => $entry->{backend_name}, +								);  							}  						} diff --git a/lib/Travelynx/Model/Stations.pm b/lib/Travelynx/Model/Stations.pm index 6758b93..174b3b4 100644 --- a/lib/Travelynx/Model/Stations.pm +++ b/lib/Travelynx/Model/Stations.pm @@ -120,6 +120,7 @@ sub get_backends {  	return @ret;  } +# Slow for MOTIS backends  sub add_or_update {  	my ( $self, %opt ) = @_;  	my $stop = $opt{stop}; @@ -188,8 +189,8 @@ sub add_or_update {  				}  			); +			# MOTIS backends do not provide a numeric ID, so we set our ID here.  			$stop->{eva} = $s->{eva}; -  			return;  		} @@ -211,8 +212,8 @@ sub add_or_update {  			)  		); +		# MOTIS backends do not provide a numeric ID, so we set our ID here.  		$stop->{eva} = $s->hash->{eva}; -  		return;  	} | 
