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/Model/Stations.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/Model/Stations.pm')
| -rw-r--r-- | lib/Travelynx/Model/Stations.pm | 63 | 
1 files changed, 58 insertions, 5 deletions
| diff --git a/lib/Travelynx/Model/Stations.pm b/lib/Travelynx/Model/Stations.pm index 174b3b4..bf35d1a 100644 --- a/lib/Travelynx/Model/Stations.pm +++ b/lib/Travelynx/Model/Stations.pm @@ -23,12 +23,15 @@ sub get_backend_id {  		# special case  		return 0;  	} -	if ( $opt{hafas} and $self->{backend_id}{hafas}{ $opt{hafas} } ) { -		return $self->{backend_id}{hafas}{ $opt{hafas} }; -	}  	if ( $opt{dbris} and $self->{backend_id}{dbris}{ $opt{dbris} } ) {  		return $self->{backend_id}{dbris}{ $opt{dbris} };  	} +	if ( $opt{efa} and $self->{backend_id}{efa}{ $opt{efa} } ) { +		return $self->{backend_id}{efa}{ $opt{efa} }; +	} +	if ( $opt{hafas} and $self->{backend_id}{hafas}{ $opt{hafas} } ) { +		return $self->{backend_id}{hafas}{ $opt{hafas} }; +	}  	if ( $opt{motis} and $self->{backend_id}{motis}{ $opt{motis} } ) {  		return $self->{backend_id}{motis}{ $opt{motis} };  	} @@ -47,6 +50,17 @@ sub get_backend_id {  		)->hash->{id};  		$self->{backend_id}{dbris}{ $opt{dbris} } = $backend_id;  	} +	elsif ( $opt{efa} ) { +		$backend_id = $db->select( +			'backends', +			['id'], +			{ +				efa  => 1, +				name => $opt{efa} +			} +		)->hash->{id}; +		$self->{backend_id}{efa}{ $opt{efa} } = $backend_id; +	}  	elsif ( $opt{hafas} ) {  		$backend_id = $db->select(  			'backends', @@ -100,7 +114,7 @@ sub get_backends {  	$opt{db} //= $self->{pg}->db;  	my $res = $opt{db}->select( 'backends', -		[ 'id', 'name', 'iris', 'hafas', 'dbris', 'motis' ] ); +		[ 'id', 'name', 'dbris', 'efa', 'hafas', 'iris', 'motis' ] );  	my @ret;  	while ( my $row = $res->hash ) { @@ -109,9 +123,10 @@ sub get_backends {  			{  				id    => $row->{id},  				name  => $row->{name}, -				iris  => $row->{iris},  				dbris => $row->{dbris}, +				efa   => $row->{efa},  				hafas => $row->{hafas}, +				iris  => $row->{iris},  				motis => $row->{motis},  			}  		); @@ -166,6 +181,44 @@ sub add_or_update {  		return;  	} +	if ( $opt{efa} ) { +		if ( +			my $s = $self->get_by_eva( +				$stop->id_num, +				db         => $opt{db}, +				backend_id => $opt{backend_id} +			) +		  ) +		{ +			$opt{db}->update( +				'stations', +				{ +					name     => $stop->full_name, +					lat      => $stop->latlon->[0], +					lon      => $stop->latlon->[1], +					archived => 0 +				}, +				{ +					eva    => $stop->id_num, +					source => $opt{backend_id} +				} +			); +			return; +		} +		$opt{db}->insert( +			'stations', +			{ +				eva      => $stop->id_num, +				name     => $stop->full_name, +				lat      => $stop->latlon->[0], +				lon      => $stop->latlon->[1], +				source   => $opt{backend_id}, +				archived => 0 +			} +		); +		return; +	} +  	if ( $opt{motis} ) {  		if (  			my $s = $self->get_by_external_id( | 
