diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-15 08:23:48 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-15 08:23:51 +0200 |
commit | c250a2f2c7968966014315f76b25109b83c041ed (patch) | |
tree | 3c6ee328e7e67beadeac44d9458a048fe3e0b473 /lib/Travelynx/Command/database.pm | |
parent | f1da50f9f18f0a2a5fd202daff4b6f0b517f35e0 (diff) |
Add experimental EFA support
Squashed commit of the following:
commit b7457791ab7ab4859ebf4a5ce173e1aaeed4c7fb
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sun Jun 15 08:18:46 2025 +0200
changelog
commit 7f3d61066195cfc3c83a8fc1b2fc3743e7e6171c
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sat Jun 14 19:55:51 2025 +0200
Mark EFA backends as experimental for now
For instance, VRR has very interesting issues when checking into departures
that do not have real-time data yet.
commit 3370c0f6c25bd6b02cc4d56e9a3aba2a66d1151a
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sat Jun 14 19:49:48 2025 +0200
InTransit: remove debug output
commit deb5444fa2965228b537e86fce862436ef2e6e19
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sat Jun 14 19:12:44 2025 +0200
frontend js for checked-in view: never show fractional delays
commit d47ff9615b551bbd844a799be7717e9e74a04266
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sat Jun 14 19:12:31 2025 +0200
worker: add EFA support
commit 3a955c0105bf13d040a821e2c87a19694202cde6
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sat Jun 14 17:48:46 2025 +0200
EFA: checkin support
worker support and cancellations are still missing
commit 19dea1ad13029d19cba38e7d1338718149c139fb
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sat Jun 14 14:32:59 2025 +0200
actions.js: pass on efa parameter
commit 8f18ff2c8f9f906a387dbe16d372e1c4b4a6f259
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sat Jun 14 14:32:48 2025 +0200
EFA: implement geolocation lookup
commit bce1139bab9aab167cdab910fa86085529d45b80
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Sat Jun 14 14:32:21 2025 +0200
EFA: ->id is no longer supported, use ->id_num
commit e4397e6b1538ddfa71da9839d6011a73fadc528f
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Mon Jun 9 20:34:22 2025 +0200
... derp
commit e0c4cbf862a8f5a7bca0b1aceab3760af94093e9
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Mon Jun 9 18:28:35 2025 +0200
database: it's dbris, not ris
commit bfb1e834ce6c3171011dc20b32117065960b8771
Merge: 42f9a00 f1da50f
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Mon Jun 9 18:20:51 2025 +0200
Merge branch 'main' into efa-support
commit 42f9a00d98dbd675234c05b3e25c3e722cfdd7ba
Author: Birte Kristina Friesel <derf@finalrewind.org>
Date: Wed Jan 8 18:11:28 2025 +0100
EFA support (WiP)
Diffstat (limited to 'lib/Travelynx/Command/database.pm')
-rw-r--r-- | lib/Travelynx/Command/database.pm | 69 |
1 files changed, 63 insertions, 6 deletions
diff --git a/lib/Travelynx/Command/database.pm b/lib/Travelynx/Command/database.pm index e264c89..1385389 100644 --- a/lib/Travelynx/Command/database.pm +++ b/lib/Travelynx/Command/database.pm @@ -10,6 +10,7 @@ use DateTime; use File::Slurp qw(read_file); use List::Util qw(); use JSON; +use Travel::Status::DE::EFA; use Travel::Status::DE::HAFAS; use Travel::Status::DE::IRIS::Stations; use Travel::Status::MOTIS; @@ -3023,6 +3024,19 @@ qq{select distinct checkout_station_id from in_transit where backend_id = 0;} } ); }, + + # v62 -> v63 + # Add EFA backend support + sub { + my ($db) = @_; + $db->query( + qq{ + alter table schema_version add column efa varchar(12); + update schema_version set version = 63; + update schema_version set efa = '0'; + } + ); + }, ); sub sync_stations { @@ -3213,6 +3227,37 @@ sub sync_stations { } } +sub sync_backends_efa { + my ($db) = @_; + for my $service ( Travel::Status::DE::EFA::get_services() ) { + my $present = $db->select( + 'backends', + 'count(*) as count', + { + efa => 1, + name => $service->{shortname} + } + )->hash->{count}; + if ( not $present ) { + $db->insert( + 'backends', + { + dbris => 0, + efa => 1, + hafas => 0, + iris => 0, + motis => 0, + name => $service->{shortname}, + }, + { on_conflict => undef } + ); + } + } + + $db->update( 'schema_version', + { efa => $Travel::Status::DE::EFA::VERSION } ); +} + sub sync_backends_hafas { my ($db) = @_; for my $service ( Travel::Status::DE::HAFAS::get_services() ) { @@ -3228,10 +3273,11 @@ sub sync_backends_hafas { $db->insert( 'backends', { - iris => 0, - hafas => 1, - efa => 0, dbris => 0, + efa => 0, + hafas => 1, + iris => 0, + motis => 0, name => $service->{shortname}, }, { on_conflict => undef } @@ -3258,10 +3304,10 @@ sub sync_backends_motis { $db->insert( 'backends', { - iris => 0, - hafas => 0, - efa => 0, dbris => 0, + efa => 0, + hafas => 0, + iris => 0, motis => 1, name => $service->{shortname}, }, @@ -3361,6 +3407,17 @@ sub migrate_db { } } + my $efa_version = get_schema_version( $db, 'efa' ); + say "Found backend table for EFA v${efa_version}"; + if ( $efa_version eq $Travel::Status::DE::EFA::VERSION ) { + say 'Backend table is up-to-date'; + } + else { + say +"Synchronizing with Travel::Status::DE::EFA $Travel::Status::DE::EFA::VERSION"; + sync_backends_efa($db); + } + my $hafas_version = get_schema_version( $db, 'hafas' ); say "Found backend table for HAFAS v${hafas_version}"; if ( $hafas_version eq $Travel::Status::DE::HAFAS::VERSION ) { |