summaryrefslogtreecommitdiff
path: root/lib/Travelynx
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2025-09-18 20:52:32 +0200
committerBirte Kristina Friesel <derf@finalrewind.org>2025-09-18 20:52:32 +0200
commit3233b996b3c31976e8aee42dc867e7ad92dd61dc (patch)
tree2842fff596770f185b3cfaf5b5fa529fc753a1ae /lib/Travelynx
parent0a2fdea55f38c30904600c1ae0322256ade0e53d (diff)
Stations->get_by_names: backend_id is mandatory these days
Diffstat (limited to 'lib/Travelynx')
-rw-r--r--lib/Travelynx/Command/integritycheck.pm9
-rwxr-xr-xlib/Travelynx/Model/Journeys.pm15
-rw-r--r--lib/Travelynx/Model/Stations.pm19
3 files changed, 28 insertions, 15 deletions
diff --git a/lib/Travelynx/Command/integritycheck.pm b/lib/Travelynx/Command/integritycheck.pm
index be5fe71..907d484 100644
--- a/lib/Travelynx/Command/integritycheck.pm
+++ b/lib/Travelynx/Command/integritycheck.pm
@@ -76,7 +76,8 @@ sub run {
my %notified;
my $rename = $self->app->renamed_station;
- my $res = $db->select( 'journeys', [ 'route', 'edited' ] )->expand;
+ my $res = $db->select( 'journeys', [ 'backend_id', 'route', 'edited' ] )
+ ->expand;
while ( my $j = $res->hash ) {
if ( $j->{edited} & 0x0010 ) {
@@ -89,8 +90,10 @@ sub run {
$stop->[0] = $rename->{ $stop->[0] };
}
}
- my @unknown
- = $self->app->stations->grep_unknown( map { $_->[0] } @stops );
+ my @unknown = $self->app->stations->grep_unknown(
+ backend_id => $j->{backend_id},
+ names => [ map { $_->[0] } @stops ]
+ );
for my $stop_name (@unknown) {
if ( not $notified{$stop_name} ) {
if ( not $found ) {
diff --git a/lib/Travelynx/Model/Journeys.pm b/lib/Travelynx/Model/Journeys.pm
index b1af966..46ad1c0 100755
--- a/lib/Travelynx/Model/Journeys.pm
+++ b/lib/Travelynx/Model/Journeys.pm
@@ -445,8 +445,12 @@ sub update {
# Otherwise, fetch stop IDs so that polylines remain usable
if ( @new_route != @{ $opt{route} } ) {
- my %stop_id = map { $_->{name} => $_->{eva} }
- $self->{stations}->get_by_names( @{ $opt{route} } );
+ my %stop_id
+ = map { $_->{name} => $_->{eva} }
+ $self->{stations}->get_by_names(
+ backend_id => $journey->{backend_id},
+ names => [ $opt{route} ]
+ );
@new_route = map { [ $_, $stop_id{$_}, {} ] } @{ $opt{route} };
}
@@ -1268,9 +1272,10 @@ sub sanity_check {
. ' Stimmt das wirklich?';
}
if ( $journey->{edited} & 0x0010 and not $lax ) {
- my @unknown_stations
- = $self->{stations}
- ->grep_unknown( map { $_->[0] } @{ $journey->{route} } );
+ my @unknown_stations = $self->{stations}->grep_unknown(
+ backend_id => $journey->{backend_id},
+ names => [ 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 c6d9730..5316118 100644
--- a/lib/Travelynx/Model/Stations.pm
+++ b/lib/Travelynx/Model/Stations.pm
@@ -461,11 +461,16 @@ sub get_by_name {
# Slow
sub get_by_names {
- my ( $self, @names ) = @_;
+ my ( $self, %opt ) = @_;
- my @ret
- = $self->{pg}->db->select( 'stations', '*', { name => { '=', \@names } } )
- ->hashes->each;
+ my @ret = $self->{pg}->db->select(
+ 'stations',
+ '*',
+ {
+ name => { '=', $opt{names} },
+ source => $opt{backend_id}
+ }
+ )->hashes->each;
return @ret;
}
@@ -506,10 +511,10 @@ sub search {
# Slow
sub grep_unknown {
- my ( $self, @stations ) = @_;
+ my ( $self, %opt ) = @_;
- my %station = map { $_->{name} => 1 } $self->get_by_names(@stations);
- my @unknown_stations = grep { not $station{$_} } @stations;
+ my %station = map { $_->{name} => 1 } $self->get_by_names(%opt);
+ my @unknown_stations = grep { not $station{$_} } @{ $opt{names} };
return @unknown_stations;
}