diff options
| author | Birte Kristina Friesel <derf@finalrewind.org> | 2024-04-21 19:21:16 +0200 | 
|---|---|---|
| committer | Birte Kristina Friesel <derf@finalrewind.org> | 2024-04-21 19:21:16 +0200 | 
| commit | a0bd8395946f9f944f798c081752bb04db335203 (patch) | |
| tree | c2be648afddef3fbb403815d78485de6b2d354c5 /lib/Travelynx/Model | |
| parent | 2ff5f92bcc7b4106a675e2bd01da73f8150dae5f (diff) | |
refactor polyline insertion into InTransit Model
Diffstat (limited to 'lib/Travelynx/Model')
| -rw-r--r-- | lib/Travelynx/Model/InTransit.pm | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/lib/Travelynx/Model/InTransit.pm b/lib/Travelynx/Model/InTransit.pm index 0859aed..69026ac 100644 --- a/lib/Travelynx/Model/InTransit.pm +++ b/lib/Travelynx/Model/InTransit.pm @@ -517,6 +517,61 @@ sub set_arrival_times {  	);  } +sub set_polyline { +	my ( $self, %opt ) = @_; + +	my $uid      = $opt{uid}; +	my $db       = $opt{db} // $self->{pg}->db; +	my $polyline = $opt{polyline}; +	my $old_id   = $opt{old_id}; + +	my $coords   = $polyline->{coords}; +	my $from_eva = $polyline->{from_eva}; +	my $to_eva   = $polyline->{to_eva}; + +	my $polyline_str = JSON->new->encode($coords); + +	my $pl_res = $db->select( +		'polylines', +		['id'], +		{ +			origin_eva      => $from_eva, +			destination_eva => $to_eva, +			polyline        => $polyline_str, +		}, +		{ limit => 1 } +	); + +	my $polyline_id; +	if ( my $h = $pl_res->hash ) { +		$polyline_id = $h->{id}; +	} +	else { +		eval { +			$polyline_id = $db->insert( +				'polylines', +				{ +					origin_eva      => $from_eva, +					destination_eva => $to_eva, +					polyline        => $polyline_str +				}, +				{ returning => 'id' } +			)->hash->{id}; +		}; +		if ($@) { +			$self->{log}->warn("add_route_timestamps: insert polyline: $@"); +		} +	} +	if ( $polyline_id and ( not defined $old_id or $polyline_id != $old_id ) ) { +		$self->set_polyline_id( +			uid         => $uid, +			db          => $db, +			polyline_id => $polyline_id +		); +	} + +} +  sub set_polyline_id {  	my ( $self, %opt ) = @_; | 
