@golemio/pid 5.8.3-dev.2426065065 → 5.8.3-dev.2434601844
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/migrations/postgresql/20260407082406-add-new-columns-to-getDepartures().js +53 -0
- package/db/migrations/postgresql/sqls/20260407082406-add-new-columns-to-getDepartures()-down.sql +152 -0
- package/db/migrations/postgresql/sqls/20260407082406-add-new-columns-to-getDepartures()-up.sql +158 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js +4 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var dbm;
|
|
4
|
+
var type;
|
|
5
|
+
var seed;
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var Promise;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
+
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
+
*/
|
|
14
|
+
exports.setup = function(options, seedLink) {
|
|
15
|
+
dbm = options.dbmigrate;
|
|
16
|
+
type = dbm.dataType;
|
|
17
|
+
seed = seedLink;
|
|
18
|
+
Promise = options.Promise;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.up = function(db) {
|
|
22
|
+
var filePath = path.join(__dirname, 'sqls', '20260407082406-add-new-columns-to-getDepartures()-up.sql');
|
|
23
|
+
return new Promise( function( resolve, reject ) {
|
|
24
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
+
if (err) return reject(err);
|
|
26
|
+
console.log('received data: ' + data);
|
|
27
|
+
|
|
28
|
+
resolve(data);
|
|
29
|
+
});
|
|
30
|
+
})
|
|
31
|
+
.then(function(data) {
|
|
32
|
+
return db.runSql(data);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.down = function(db) {
|
|
37
|
+
var filePath = path.join(__dirname, 'sqls', '20260407082406-add-new-columns-to-getDepartures()-down.sql');
|
|
38
|
+
return new Promise( function( resolve, reject ) {
|
|
39
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
+
if (err) return reject(err);
|
|
41
|
+
console.log('received data: ' + data);
|
|
42
|
+
|
|
43
|
+
resolve(data);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.then(function(data) {
|
|
47
|
+
return db.runSql(data);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports._meta = {
|
|
52
|
+
"version": 1
|
|
53
|
+
};
|
package/db/migrations/postgresql/sqls/20260407082406-add-new-columns-to-getDepartures()-down.sql
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
DROP FUNCTION pid.get_departures(varchar, int4, timestamptz, timestamptz, int4, timestamptz, timestamptz, int4);
|
|
2
|
+
|
|
3
|
+
CREATE FUNCTION pid.get_departures(stopsids character varying, mode integer, datedeparturebetweenstart timestamp with time zone, datedeparturebetweenend timestamp with time zone, isnegativeminutesbefore integer, datecanceleddeparturebetweenstart timestamp with time zone, datecanceleddeparturebetweenend timestamp with time zone, airconditioninfoenabled integer)
|
|
4
|
+
RETURNS TABLE(departure_datetime_real timestamp with time zone, arrival_datetime_real timestamp with time zone, stop_sequence smallint, stop_headsign character varying, arrival_datetime timestamp with time zone, departure_datetime timestamp with time zone, stop_id character varying, platform_code character varying, wheelchair_boarding smallint, min_stop_sequence smallint, max_stop_sequence smallint, trip_id character varying, trip_headsign character varying, trip_short_name character varying, wheelchair_accessible smallint, route_short_name character varying, route_type smallint, route_id character varying, is_night character, is_regional character, is_substitute_transport character, next_stop_id character varying, delay_seconds integer, real_wheelchair_accessible boolean, is_canceled boolean, "trip.gtfs_trip_short_name" character varying, "trip.gtfs_date" date, "trip.internal_route_name" character varying, "trip.internal_run_number" integer, "trip.start_timestamp" timestamp with time zone, "trip.last_position.state_position" character varying, "trip.last_position.last_stop_id" character varying, "trip.last_position.last_stop_sequence" integer, "trip.last_position.last_stop_name" character varying, "trip.last_position.this_stop_sequence" integer, "trip.cis_stop_platform_code" character varying, "trip.vehicle_descriptor.is_air_conditioned" boolean, delay_minutes integer, is_delay_available boolean, run_number integer, planned_start_timestamp timestamp with time zone)
|
|
5
|
+
LANGUAGE sql
|
|
6
|
+
SET search_path TO 'pid', 'public'
|
|
7
|
+
AS $function$
|
|
8
|
+
select
|
|
9
|
+
departure_boards_detailed."computed.departure_datetime_real",
|
|
10
|
+
departure_boards_detailed."computed.arrival_datetime_real",
|
|
11
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
|
|
12
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
|
|
13
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
|
|
14
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
|
|
15
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
|
|
16
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
|
|
17
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
18
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
19
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
20
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
|
|
21
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
|
|
22
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
|
|
23
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
24
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
|
|
25
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
|
|
26
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
|
|
27
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
|
|
28
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
|
|
29
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
30
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
|
|
31
|
+
departure_boards_detailed."delay_seconds",
|
|
32
|
+
departure_boards_detailed."real_wheelchair_accessible",
|
|
33
|
+
departure_boards_detailed."is_canceled",
|
|
34
|
+
departure_boards_detailed."trip.gtfs_trip_short_name",
|
|
35
|
+
departure_boards_detailed."trip.gtfs_date",
|
|
36
|
+
departure_boards_detailed."trip.internal_route_name",
|
|
37
|
+
departure_boards_detailed."trip.internal_run_number",
|
|
38
|
+
departure_boards_detailed."trip.start_timestamp",
|
|
39
|
+
departure_boards_detailed."trip.last_position.state_position",
|
|
40
|
+
departure_boards_detailed."trip.last_position.last_stop_id",
|
|
41
|
+
departure_boards_detailed."trip.last_position.last_stop_sequence",
|
|
42
|
+
departure_boards_detailed."trip.last_position.last_stop_name",
|
|
43
|
+
departure_boards_detailed."trip.last_position.this_stop_sequence",
|
|
44
|
+
departure_boards_detailed.cis_stop_platform_code as "trip.cis_stop_platform_code",
|
|
45
|
+
case when airconditioninfoenabled = 1 then departure_boards_detailed."trip.vehicle_descriptor.is_air_conditioned" else NULL end,
|
|
46
|
+
TRUNC(departure_boards_detailed."trip.last_position.delay"::DECIMAL / 60, 0)::int as "delay_minutes",
|
|
47
|
+
case when departure_boards_detailed."trip.last_position.delay" is null then false else true end as "is_delay_available",
|
|
48
|
+
departure_boards_detailed."run.run_number",
|
|
49
|
+
departure_boards_detailed.planned_start_timestamp
|
|
50
|
+
|
|
51
|
+
from (
|
|
52
|
+
select
|
|
53
|
+
("departure_datetime"
|
|
54
|
+
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
|
|
55
|
+
- case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
|
|
56
|
+
then least (
|
|
57
|
+
MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
|
|
58
|
+
("departure_datetime" - "arrival_datetime")::interval
|
|
59
|
+
)
|
|
60
|
+
else MAKE_INTERVAL()
|
|
61
|
+
end
|
|
62
|
+
) "computed.departure_datetime_real",
|
|
63
|
+
"arrival_datetime" + MAKE_INTERVAL(secs => (
|
|
64
|
+
CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
|
|
65
|
+
)) "computed.arrival_datetime_real",
|
|
66
|
+
"ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
|
|
67
|
+
"ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
|
|
68
|
+
"ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
|
|
69
|
+
"ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
|
|
70
|
+
"ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
|
|
71
|
+
"ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
|
|
72
|
+
"ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
|
|
73
|
+
"ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
|
|
74
|
+
"ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
|
|
75
|
+
"ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
|
|
76
|
+
"ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
|
|
77
|
+
"ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
78
|
+
"ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
79
|
+
"ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
80
|
+
"ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
|
|
81
|
+
"ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
|
|
82
|
+
"ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
|
|
83
|
+
"ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
84
|
+
"ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
|
|
85
|
+
"ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
|
|
86
|
+
"ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
|
|
87
|
+
"ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
|
|
88
|
+
"ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
|
|
89
|
+
"ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
|
|
90
|
+
"ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
|
|
91
|
+
"ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
92
|
+
"ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
|
|
93
|
+
"ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
|
|
94
|
+
"ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
|
|
95
|
+
"ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
|
|
96
|
+
plan_start.planned_departure AS planned_start_timestamp,
|
|
97
|
+
x.*,
|
|
98
|
+
cis_stop.cis_stop_platform_code as "cis_stop_platform_code",
|
|
99
|
+
run.run_number as "run.run_number"
|
|
100
|
+
from
|
|
101
|
+
"ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
|
|
102
|
+
left join "ropidgtfs_run_numbers" as run on
|
|
103
|
+
"ropidgtfs_precomputed_departures"."trip_id" = run.trip_id
|
|
104
|
+
and "ropidgtfs_precomputed_departures"."service_id" = run.service_id
|
|
105
|
+
left outer join v_vehiclepositions_trip_position_vehicle_info as x on
|
|
106
|
+
"ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
|
|
107
|
+
left join lateral (
|
|
108
|
+
select pd.departure_datetime as planned_departure
|
|
109
|
+
from ropidgtfs_precomputed_departures pd
|
|
110
|
+
where pd.trip_id = "ropidgtfs_precomputed_departures".trip_id
|
|
111
|
+
and pd.date = "ropidgtfs_precomputed_departures".date
|
|
112
|
+
and pd.stop_sequence = 1
|
|
113
|
+
limit 1
|
|
114
|
+
) as plan_start on true
|
|
115
|
+
left join vehiclepositions_cis_stops as cis_stop on
|
|
116
|
+
cis_stop.rt_trip_id = x."trip.id"
|
|
117
|
+
and cis_stop.cis_stop_group_id = "ropidgtfs_precomputed_departures"."cis_stop_group_id"
|
|
118
|
+
) departure_boards_detailed
|
|
119
|
+
where
|
|
120
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
|
|
121
|
+
and (
|
|
122
|
+
(
|
|
123
|
+
(
|
|
124
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
125
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
126
|
+
)
|
|
127
|
+
and
|
|
128
|
+
(
|
|
129
|
+
0 = isNegativeMinutesBefore
|
|
130
|
+
or ( -- pro záporné minutes before
|
|
131
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
|
|
132
|
+
or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
|
|
133
|
+
)
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
)
|
|
137
|
+
or (
|
|
138
|
+
departure_boards_detailed."trip.is_canceled" = true
|
|
139
|
+
and
|
|
140
|
+
(
|
|
141
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
142
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
143
|
+
)
|
|
144
|
+
)
|
|
145
|
+
) and
|
|
146
|
+
(
|
|
147
|
+
(mode = 1 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1' and departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" != departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence")) -- mode default/departures
|
|
148
|
+
or (mode=2 and (departure_boards_detailed."ropidgtfs_precomputed_departures.drop_off_type" != '1' and departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" != departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence")) -- mode arrivals
|
|
149
|
+
or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
|
|
150
|
+
);
|
|
151
|
+
$function$
|
|
152
|
+
;
|
package/db/migrations/postgresql/sqls/20260407082406-add-new-columns-to-getDepartures()-up.sql
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
DROP FUNCTION pid.get_departures(varchar, int4, timestamptz, timestamptz, int4, timestamptz, timestamptz, int4);
|
|
2
|
+
|
|
3
|
+
CREATE FUNCTION pid.get_departures(stopsids character varying, mode integer, datedeparturebetweenstart timestamp with time zone, datedeparturebetweenend timestamp with time zone, isnegativeminutesbefore integer, datecanceleddeparturebetweenstart timestamp with time zone, datecanceleddeparturebetweenend timestamp with time zone, airconditioninfoenabled integer)
|
|
4
|
+
RETURNS TABLE(departure_datetime_real timestamp with time zone, arrival_datetime_real timestamp with time zone, stop_sequence smallint, stop_headsign character varying, arrival_datetime timestamp with time zone, departure_datetime timestamp with time zone, stop_id character varying, platform_code character varying, wheelchair_boarding smallint, min_stop_sequence smallint, max_stop_sequence smallint, trip_id character varying, trip_headsign character varying, trip_short_name character varying, wheelchair_accessible smallint, route_short_name character varying, route_type smallint, route_id character varying, is_night character, is_regional character, is_substitute_transport character, next_stop_id character varying, next_route_short_name text, next_trip_headsign text, max_stop_sequence_with_stop_headsign integer, delay_seconds integer, real_wheelchair_accessible boolean, is_canceled boolean, "trip.gtfs_trip_short_name" character varying, "trip.gtfs_date" date, "trip.internal_route_name" character varying, "trip.internal_run_number" integer, "trip.start_timestamp" timestamp with time zone, "trip.last_position.state_position" character varying, "trip.last_position.last_stop_id" character varying, "trip.last_position.last_stop_sequence" integer, "trip.last_position.last_stop_name" character varying, "trip.last_position.this_stop_sequence" integer, "trip.cis_stop_platform_code" character varying, "trip.vehicle_descriptor.is_air_conditioned" boolean, delay_minutes integer, is_delay_available boolean, run_number integer, planned_start_timestamp timestamp with time zone)
|
|
5
|
+
LANGUAGE sql
|
|
6
|
+
SET search_path TO 'pid', 'public'
|
|
7
|
+
AS $function$
|
|
8
|
+
select
|
|
9
|
+
departure_boards_detailed."computed.departure_datetime_real",
|
|
10
|
+
departure_boards_detailed."computed.arrival_datetime_real",
|
|
11
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
|
|
12
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
|
|
13
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
|
|
14
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
|
|
15
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
|
|
16
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
|
|
17
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
18
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
19
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
20
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
|
|
21
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
|
|
22
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
|
|
23
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
24
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
|
|
25
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
|
|
26
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
|
|
27
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
|
|
28
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
|
|
29
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
30
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
|
|
31
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.next_route_short_name",
|
|
32
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.next_trip_headsign",
|
|
33
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence_with_stop_headsign",
|
|
34
|
+
departure_boards_detailed."delay_seconds",
|
|
35
|
+
departure_boards_detailed."real_wheelchair_accessible",
|
|
36
|
+
departure_boards_detailed."is_canceled",
|
|
37
|
+
departure_boards_detailed."trip.gtfs_trip_short_name",
|
|
38
|
+
departure_boards_detailed."trip.gtfs_date",
|
|
39
|
+
departure_boards_detailed."trip.internal_route_name",
|
|
40
|
+
departure_boards_detailed."trip.internal_run_number",
|
|
41
|
+
departure_boards_detailed."trip.start_timestamp",
|
|
42
|
+
departure_boards_detailed."trip.last_position.state_position",
|
|
43
|
+
departure_boards_detailed."trip.last_position.last_stop_id",
|
|
44
|
+
departure_boards_detailed."trip.last_position.last_stop_sequence",
|
|
45
|
+
departure_boards_detailed."trip.last_position.last_stop_name",
|
|
46
|
+
departure_boards_detailed."trip.last_position.this_stop_sequence",
|
|
47
|
+
departure_boards_detailed.cis_stop_platform_code as "trip.cis_stop_platform_code",
|
|
48
|
+
case when airconditioninfoenabled = 1 then departure_boards_detailed."trip.vehicle_descriptor.is_air_conditioned" else NULL end,
|
|
49
|
+
TRUNC(departure_boards_detailed."trip.last_position.delay"::DECIMAL / 60, 0)::int as "delay_minutes",
|
|
50
|
+
case when departure_boards_detailed."trip.last_position.delay" is null then false else true end as "is_delay_available",
|
|
51
|
+
departure_boards_detailed."run.run_number",
|
|
52
|
+
departure_boards_detailed.planned_start_timestamp
|
|
53
|
+
|
|
54
|
+
from (
|
|
55
|
+
select
|
|
56
|
+
("departure_datetime"
|
|
57
|
+
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
|
|
58
|
+
- case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
|
|
59
|
+
then least (
|
|
60
|
+
MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
|
|
61
|
+
("departure_datetime" - "arrival_datetime")::interval
|
|
62
|
+
)
|
|
63
|
+
else MAKE_INTERVAL()
|
|
64
|
+
end
|
|
65
|
+
) "computed.departure_datetime_real",
|
|
66
|
+
"arrival_datetime" + MAKE_INTERVAL(secs => (
|
|
67
|
+
CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
|
|
68
|
+
)) "computed.arrival_datetime_real",
|
|
69
|
+
"ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
|
|
70
|
+
"ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
|
|
71
|
+
"ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
|
|
72
|
+
"ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
|
|
73
|
+
"ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
|
|
74
|
+
"ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
|
|
75
|
+
"ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
|
|
76
|
+
"ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
|
|
77
|
+
"ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
|
|
78
|
+
"ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
|
|
79
|
+
"ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
|
|
80
|
+
"ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
81
|
+
"ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
82
|
+
"ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
83
|
+
"ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
|
|
84
|
+
"ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
|
|
85
|
+
"ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
|
|
86
|
+
"ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
87
|
+
"ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
|
|
88
|
+
"ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
|
|
89
|
+
"ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
|
|
90
|
+
"ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
|
|
91
|
+
"ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
|
|
92
|
+
"ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
|
|
93
|
+
"ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
|
|
94
|
+
"ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
95
|
+
"ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
|
|
96
|
+
"ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
|
|
97
|
+
"ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
|
|
98
|
+
"ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
|
|
99
|
+
"ropidgtfs_precomputed_departures"."next_route_short_name" as "ropidgtfs_precomputed_departures.next_route_short_name",
|
|
100
|
+
"ropidgtfs_precomputed_departures"."next_trip_headsign" as "ropidgtfs_precomputed_departures.next_trip_headsign",
|
|
101
|
+
"ropidgtfs_precomputed_departures"."max_stop_sequence_with_stop_headsign" as "ropidgtfs_precomputed_departures.max_stop_sequence_with_stop_headsign",
|
|
102
|
+
plan_start.planned_departure AS planned_start_timestamp,
|
|
103
|
+
x.*,
|
|
104
|
+
cis_stop.cis_stop_platform_code as "cis_stop_platform_code",
|
|
105
|
+
run.run_number as "run.run_number"
|
|
106
|
+
from
|
|
107
|
+
"ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
|
|
108
|
+
left join "ropidgtfs_run_numbers" as run on
|
|
109
|
+
"ropidgtfs_precomputed_departures"."trip_id" = run.trip_id
|
|
110
|
+
and "ropidgtfs_precomputed_departures"."service_id" = run.service_id
|
|
111
|
+
left outer join v_vehiclepositions_trip_position_vehicle_info as x on
|
|
112
|
+
"ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
|
|
113
|
+
left join lateral (
|
|
114
|
+
select pd.departure_datetime as planned_departure
|
|
115
|
+
from ropidgtfs_precomputed_departures pd
|
|
116
|
+
where pd.trip_id = "ropidgtfs_precomputed_departures".trip_id
|
|
117
|
+
and pd.date = "ropidgtfs_precomputed_departures".date
|
|
118
|
+
and pd.stop_sequence = 1
|
|
119
|
+
limit 1
|
|
120
|
+
) as plan_start on true
|
|
121
|
+
left join vehiclepositions_cis_stops as cis_stop on
|
|
122
|
+
cis_stop.rt_trip_id = x."trip.id"
|
|
123
|
+
and cis_stop.cis_stop_group_id = "ropidgtfs_precomputed_departures"."cis_stop_group_id"
|
|
124
|
+
) departure_boards_detailed
|
|
125
|
+
where
|
|
126
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
|
|
127
|
+
and (
|
|
128
|
+
(
|
|
129
|
+
(
|
|
130
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
131
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
132
|
+
)
|
|
133
|
+
and
|
|
134
|
+
(
|
|
135
|
+
0 = isNegativeMinutesBefore
|
|
136
|
+
or ( -- pro záporné minutes before
|
|
137
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
|
|
138
|
+
or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
|
|
139
|
+
)
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
)
|
|
143
|
+
or (
|
|
144
|
+
departure_boards_detailed."trip.is_canceled" = true
|
|
145
|
+
and
|
|
146
|
+
(
|
|
147
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
148
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
149
|
+
)
|
|
150
|
+
)
|
|
151
|
+
) and
|
|
152
|
+
(
|
|
153
|
+
(mode = 1 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1' and departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" != departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence")) -- mode default/departures
|
|
154
|
+
or (mode=2 and (departure_boards_detailed."ropidgtfs_precomputed_departures.drop_off_type" != '1' and departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" != departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence")) -- mode arrivals
|
|
155
|
+
or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
|
|
156
|
+
);
|
|
157
|
+
$function$
|
|
158
|
+
;
|
|
@@ -9,8 +9,11 @@ const TripsIdGenerator_1 = __importDefault(require("./TripsIdGenerator"));
|
|
|
9
9
|
class PositionsMapper {
|
|
10
10
|
static mapCommonRunToDto(runMessage, isCurrent, gtfsTrip, runInput) {
|
|
11
11
|
const scheduledTimestamp = runMessage.msg_timestamp ? new Date(runMessage.msg_timestamp) : null;
|
|
12
|
+
const timetableTimestamp = runMessage.actual_stop_timestamp_scheduled
|
|
13
|
+
? new Date(runMessage.actual_stop_timestamp_scheduled)
|
|
14
|
+
: null;
|
|
12
15
|
const isTerminated = runMessage.events === const_1.TCPEventEnum.TERMINATED ||
|
|
13
|
-
(
|
|
16
|
+
(timetableTimestamp ? timetableTimestamp >= new Date(gtfsTrip.end_timestamp) : false);
|
|
14
17
|
return {
|
|
15
18
|
asw_last_stop_id: runMessage.last_stop_asw_id,
|
|
16
19
|
lat: runMessage.lat,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PositionsMapper.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.ts"],"names":[],"mappings":";;;;;AAAA,2EAAuD;AAMvD,mDAA8E;AAE9E,0EAAoD;AAEpD,MAAqB,eAAe;IACzB,MAAM,CAAC,iBAAiB,CAC3B,UAA2C,EAC3C,SAAkB,EAClB,QAAsB,EACtB,QAA0B;QAE1B,MAAM,kBAAkB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"PositionsMapper.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.ts"],"names":[],"mappings":";;;;;AAAA,2EAAuD;AAMvD,mDAA8E;AAE9E,0EAAoD;AAEpD,MAAqB,eAAe;IACzB,MAAM,CAAC,iBAAiB,CAC3B,UAA2C,EAC3C,SAAkB,EAClB,QAAsB,EACtB,QAA0B;QAE1B,MAAM,kBAAkB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,MAAM,kBAAkB,GAAG,UAAU,CAAC,+BAA+B;YACjE,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,+BAA+B,CAAC;YACtD,CAAC,CAAC,IAAI,CAAC;QAEX,MAAM,YAAY,GACd,UAAU,CAAC,MAAM,KAAK,oBAAY,CAAC,UAAU;YAC7C,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE1F,OAAO;YACH,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;YAC7C,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,WAAW,EAAE,6BAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACrF,gBAAgB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACjE,mBAAmB,EAAE,kBAAkB;YACvC,cAAc,EAAE,yBAAiB,CAAC,OAAO;YACzC,aAAa,EAAE,wBAAgB,CAAC,SAAS;YACzC,UAAU,EAAE,SAAS,IAAI,CAAC,YAAY;YACtC,QAAQ,EAAE,0BAAkB,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACtE,SAAS,EAAE,UAAU,CAAC,MAAM;SAC/B,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,UAA2C,EAAE,MAAc;QAChG,OAAO;YACH,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;YAC7C,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,WAAW,EAAE,6BAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACrF,gBAAgB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;YACjE,cAAc,EAAE,yBAAiB,CAAC,UAAU;YAC5C,aAAa,EAAE,wBAAgB,CAAC,SAAS;YACzC,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,UAAU,CAAC,MAAM;SAC/B,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC1B,SAAkB,EAClB,QAAsB,EACtB,QAAqC;QAErC,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,kBAAkB,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,kBAAkB,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAE5E,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC;QAEpE,OAAO;YACH,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG;YAC7B,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG;YAC7B,WAAW,EAAE,6BAAa,CAAC,mBAAmB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACzE,gBAAgB,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,mBAAmB,EAAE,kBAAkB;YACvC,cAAc,EAAE,yBAAiB,CAAC,OAAO;YACzC,aAAa,EAAE,wBAAgB,CAAC,SAAS;YACzC,YAAY,EAAE,QAAQ,CAAC,WAAW,CAAC,YAAY;YAC/C,UAAU;YACV,QAAQ,EAAE,0BAAkB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC;SACxE,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAChC,SAAkB,EAClB,QAAsB,EACtB,UAAyC;QAEzC,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,SAAS,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAE3E,OAAO;YACH,QAAQ,EAAE,0BAAkB,CAAC,0BAA0B,CAAC,QAAQ,EAAE,UAAU,CAAC;YAC7E,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;YAC1C,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;YAC1C,WAAW,EAAE,6BAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,iBAA2B,CAAC;YACtF,gBAAgB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,iBAA2B,CAAC;YAClE,cAAc,EAAE,yBAAiB,CAAC,OAAO;YACzC,aAAa,EAAE,wBAAgB,CAAC,SAAS;YACzC,KAAK,EAAE,UAAU,CAAC,SAAS;YAC3B,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,UAAU,CAAC,MAAsB;SAC/C,CAAC;IACN,CAAC;CACJ;AA7FD,kCA6FC"}
|