diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-09 16:57:36 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-09 16:57:36 +0200 |
commit | f1da50f9f18f0a2a5fd202daff4b6f0b517f35e0 (patch) | |
tree | 39b4f81b81dbfe49555f923c0bf72d89d5629b29 | |
parent | 9b6a3171987d515e79a7935043c7f8b9f21e84c5 (diff) |
Apparently, even after a check-in has been performed, subsequent worker runs
may encounter stop IDs that were not added to stations_external_ids by the
check-in process. So we need to add_or_update all stops we ecounter.
-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; } |