summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2025-06-09 16:57:36 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2025-06-09 16:57:36 +0200
commitf1da50f9f18f0a2a5fd202daff4b6f0b517f35e0 (patch)
tree39b4f81b81dbfe49555f923c0bf72d89d5629b29
parent9b6a3171987d515e79a7935043c7f8b9f21e84c5 (diff)
Fix worker for MOTIS checkinsHEAD2.13.5main
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.pm14
-rw-r--r--lib/Travelynx/Model/Stations.pm5
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;
}