@golemio/pid 3.15.0 → 3.15.1-dev.1824469495

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.
Files changed (19) hide show
  1. package/db/migrations/postgresql/20250509095900-get-departures-planned-start.js +53 -0
  2. package/db/migrations/postgresql/sqls/20250509095900-get-departures-planned-start-down.sql +189 -0
  3. package/db/migrations/postgresql/sqls/20250509095900-get-departures-planned-start-up.sql +200 -0
  4. package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js +0 -1
  5. package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js.map +1 -1
  6. package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
  7. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.d.ts +6 -0
  8. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.js +7 -1
  9. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.js.map +1 -1
  10. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.d.ts +9 -0
  11. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js +109 -39
  12. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map +1 -1
  13. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
  14. package/dist/output-gateway/pid/index.d.ts +1 -0
  15. package/dist/output-gateway/pid/index.js.map +1 -1
  16. package/dist/output-gateway/pid/models/helpers/SkipHelper.js +6 -2
  17. package/dist/output-gateway/pid/models/helpers/SkipHelper.js.map +1 -1
  18. package/docs/cache/types/redis.md +3 -1
  19. package/package.json +3 -3
@@ -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', '20250509095900-get-departures-planned-start-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', '20250509095900-get-departures-planned-start-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
+ };
@@ -0,0 +1,189 @@
1
+ drop function get_departures;
2
+ create function get_departures (
3
+ stopsIds varchar,
4
+ mode int,
5
+ dateDepartureBetweenStart timestamptz,
6
+ dateDepartureBetweenEnd timestamptz,
7
+ isNegativeMinutesBefore int,
8
+ dateCanceledDepartureBetweenStart timestamptz,
9
+ dateCanceledDepartureBetweenEnd timestamptz,
10
+ airconditioninfoenabled int
11
+ )
12
+ returns table (
13
+ departure_datetime_real timestamptz,
14
+ arrival_datetime_real timestamptz,
15
+ stop_sequence int2,
16
+ stop_headsign varchar(70),
17
+ arrival_datetime timestamptz,
18
+ departure_datetime timestamptz,
19
+ stop_id varchar(25),
20
+ platform_code varchar(10),
21
+ wheelchair_boarding int2,
22
+ min_stop_sequence int2,
23
+ max_stop_sequence int2,
24
+ trip_id varchar(50),
25
+ trip_headsign varchar(100),
26
+ trip_short_name varchar(30),
27
+ wheelchair_accessible int2,
28
+ route_short_name varchar(50),
29
+ route_type int2,
30
+ route_id varchar(20),
31
+ is_night bpchar(1),
32
+ is_regional bpchar(1),
33
+ is_substitute_transport bpchar(1),
34
+ next_stop_id varchar(30),
35
+ delay_seconds int4,
36
+ real_wheelchair_accessible bool,
37
+ is_canceled bool,
38
+ "trip.gtfs_trip_short_name" varchar(255),
39
+ "trip.gtfs_date" date,
40
+ "trip.internal_route_name" varchar(50),
41
+ "trip.internal_run_number" int4,
42
+ "trip.start_timestamp" timestamptz,
43
+ "trip.last_position.last_stop_id" varchar(255),
44
+ "trip.last_position.last_stop_sequence" int4,
45
+ "trip.last_position.last_stop_name" varchar(255),
46
+ "trip.last_position.this_stop_sequence" int4,
47
+ "trip.cis_stop_platform_code" varchar(15),
48
+ "trip.vehicle_descriptor.is_air_conditioned" bool,
49
+ delay_minutes int4,
50
+ is_delay_available bool,
51
+ run_number int4
52
+
53
+ )
54
+ language SQL
55
+ set search_path from current
56
+ as $$
57
+ select
58
+ departure_boards_detailed."computed.departure_datetime_real",
59
+ departure_boards_detailed."computed.arrival_datetime_real",
60
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
61
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
62
+ departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
63
+ departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
64
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
65
+ departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
66
+ departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
67
+ departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
68
+ departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
69
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
70
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
71
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
72
+ departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
73
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
74
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
75
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
76
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
77
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
78
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
79
+ departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
80
+ departure_boards_detailed."delay_seconds",
81
+ departure_boards_detailed."real_wheelchair_accessible",
82
+ departure_boards_detailed."is_canceled",
83
+ departure_boards_detailed."trip.gtfs_trip_short_name",
84
+ departure_boards_detailed."trip.gtfs_date",
85
+ departure_boards_detailed."trip.internal_route_name",
86
+ departure_boards_detailed."trip.internal_run_number",
87
+ departure_boards_detailed."trip.start_timestamp",
88
+ departure_boards_detailed."trip.last_position.last_stop_id",
89
+ departure_boards_detailed."trip.last_position.last_stop_sequence",
90
+ departure_boards_detailed."trip.last_position.last_stop_name",
91
+ departure_boards_detailed."trip.last_position.this_stop_sequence",
92
+ departure_boards_detailed.cis_stop_platform_code as "trip.cis_stop_platform_code",
93
+ case when airconditioninfoenabled = 1 then departure_boards_detailed."trip.vehicle_descriptor.is_air_conditioned" else NULL end,
94
+ TRUNC(departure_boards_detailed."trip.last_position.delay"::DECIMAL / 60, 0)::int as "delay_minutes",
95
+ case when departure_boards_detailed."trip.last_position.delay" is null then false else true end as "is_delay_available",
96
+ departure_boards_detailed."run.run_number"
97
+
98
+ from (
99
+ select
100
+ ("departure_datetime"
101
+ + MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
102
+ - case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
103
+ then least (
104
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
105
+ ("departure_datetime" - "arrival_datetime")::interval
106
+ )
107
+ else MAKE_INTERVAL()
108
+ end
109
+ ) "computed.departure_datetime_real",
110
+ "arrival_datetime" + MAKE_INTERVAL(secs => (
111
+ CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
112
+ )) "computed.arrival_datetime_real",
113
+ "ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
114
+ "ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
115
+ "ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
116
+ "ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
117
+ "ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
118
+ "ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
119
+ "ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
120
+ "ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
121
+ "ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
122
+ "ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
123
+ "ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
124
+ "ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
125
+ "ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
126
+ "ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
127
+ "ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
128
+ "ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
129
+ "ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
130
+ "ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
131
+ "ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
132
+ "ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
133
+ "ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
134
+ "ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
135
+ "ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
136
+ "ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
137
+ "ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
138
+ "ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
139
+ "ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
140
+ "ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
141
+ "ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
142
+ "ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
143
+ x.*,
144
+ cis_stop.cis_stop_platform_code as "cis_stop_platform_code",
145
+ run.run_number as "run.run_number"
146
+ from
147
+ "ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
148
+ left join "ropidgtfs_run_numbers" as run on
149
+ "ropidgtfs_precomputed_departures"."trip_id" = run.trip_id
150
+ and "ropidgtfs_precomputed_departures"."service_id" = run.service_id
151
+ left outer join v_vehiclepositions_trip_position_vehicle_info as x on
152
+ "ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
153
+ left join vehiclepositions_cis_stops as cis_stop on
154
+ cis_stop.rt_trip_id = x."trip.id"
155
+ and cis_stop.cis_stop_group_id = "ropidgtfs_precomputed_departures"."cis_stop_group_id"
156
+ ) departure_boards_detailed
157
+ where
158
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
159
+ and (
160
+ (
161
+ (
162
+ (mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
163
+ or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
164
+ )
165
+ and
166
+ (
167
+ 0 = isNegativeMinutesBefore
168
+ or ( -- pro záporné minutes before
169
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
170
+ or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
171
+ )
172
+ )
173
+
174
+ )
175
+ or (
176
+ departure_boards_detailed."trip.is_canceled" = true
177
+ and
178
+ (
179
+ (mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
180
+ or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
181
+ )
182
+ )
183
+ ) and
184
+ (
185
+ (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
186
+ 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
187
+ or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
188
+ );
189
+ $$;
@@ -0,0 +1,200 @@
1
+ drop function get_departures;
2
+ create function get_departures (
3
+ stopsIds varchar,
4
+ mode int,
5
+ dateDepartureBetweenStart timestamptz,
6
+ dateDepartureBetweenEnd timestamptz,
7
+ isNegativeMinutesBefore int,
8
+ dateCanceledDepartureBetweenStart timestamptz,
9
+ dateCanceledDepartureBetweenEnd timestamptz,
10
+ airconditioninfoenabled int
11
+ )
12
+ returns table (
13
+ departure_datetime_real timestamptz,
14
+ arrival_datetime_real timestamptz,
15
+ stop_sequence int2,
16
+ stop_headsign varchar(70),
17
+ arrival_datetime timestamptz,
18
+ departure_datetime timestamptz,
19
+ stop_id varchar(25),
20
+ platform_code varchar(10),
21
+ wheelchair_boarding int2,
22
+ min_stop_sequence int2,
23
+ max_stop_sequence int2,
24
+ trip_id varchar(50),
25
+ trip_headsign varchar(100),
26
+ trip_short_name varchar(30),
27
+ wheelchair_accessible int2,
28
+ route_short_name varchar(50),
29
+ route_type int2,
30
+ route_id varchar(20),
31
+ is_night bpchar(1),
32
+ is_regional bpchar(1),
33
+ is_substitute_transport bpchar(1),
34
+ next_stop_id varchar(30),
35
+ delay_seconds int4,
36
+ real_wheelchair_accessible bool,
37
+ is_canceled bool,
38
+ "trip.gtfs_trip_short_name" varchar(255),
39
+ "trip.gtfs_date" date,
40
+ "trip.internal_route_name" varchar(50),
41
+ "trip.internal_run_number" int4,
42
+ "trip.start_timestamp" timestamptz,
43
+ "trip.last_position.last_stop_id" varchar(255),
44
+ "trip.last_position.last_stop_sequence" int4,
45
+ "trip.last_position.last_stop_name" varchar(255),
46
+ "trip.last_position.this_stop_sequence" int4,
47
+ "trip.cis_stop_platform_code" varchar(15),
48
+ "trip.vehicle_descriptor.is_air_conditioned" bool,
49
+ delay_minutes int4,
50
+ is_delay_available bool,
51
+ run_number int4,
52
+ planned_start_timestamp timestamptz
53
+
54
+ )
55
+ language SQL
56
+ set search_path from current
57
+ as $$
58
+ select
59
+ departure_boards_detailed."computed.departure_datetime_real",
60
+ departure_boards_detailed."computed.arrival_datetime_real",
61
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
62
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
63
+ departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
64
+ departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
65
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
66
+ departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
67
+ departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
68
+ departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
69
+ departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
70
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
71
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
72
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
73
+ departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
74
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
75
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
76
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
77
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
78
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
79
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
80
+ departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
81
+ departure_boards_detailed."delay_seconds",
82
+ departure_boards_detailed."real_wheelchair_accessible",
83
+ departure_boards_detailed."is_canceled",
84
+ departure_boards_detailed."trip.gtfs_trip_short_name",
85
+ departure_boards_detailed."trip.gtfs_date",
86
+ departure_boards_detailed."trip.internal_route_name",
87
+ departure_boards_detailed."trip.internal_run_number",
88
+ departure_boards_detailed."trip.start_timestamp",
89
+ departure_boards_detailed."trip.last_position.last_stop_id",
90
+ departure_boards_detailed."trip.last_position.last_stop_sequence",
91
+ departure_boards_detailed."trip.last_position.last_stop_name",
92
+ departure_boards_detailed."trip.last_position.this_stop_sequence",
93
+ departure_boards_detailed.cis_stop_platform_code as "trip.cis_stop_platform_code",
94
+ case when airconditioninfoenabled = 1 then departure_boards_detailed."trip.vehicle_descriptor.is_air_conditioned" else NULL end,
95
+ TRUNC(departure_boards_detailed."trip.last_position.delay"::DECIMAL / 60, 0)::int as "delay_minutes",
96
+ case when departure_boards_detailed."trip.last_position.delay" is null then false else true end as "is_delay_available",
97
+ departure_boards_detailed."run.run_number",
98
+ departure_boards_detailed.planned_start_timestamp
99
+
100
+ from (
101
+ select
102
+ ("departure_datetime"
103
+ + MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
104
+ - case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
105
+ then least (
106
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
107
+ ("departure_datetime" - "arrival_datetime")::interval
108
+ )
109
+ else MAKE_INTERVAL()
110
+ end
111
+ ) "computed.departure_datetime_real",
112
+ "arrival_datetime" + MAKE_INTERVAL(secs => (
113
+ CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
114
+ )) "computed.arrival_datetime_real",
115
+ "ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
116
+ "ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
117
+ "ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
118
+ "ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
119
+ "ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
120
+ "ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
121
+ "ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
122
+ "ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
123
+ "ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
124
+ "ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
125
+ "ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
126
+ "ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
127
+ "ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
128
+ "ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
129
+ "ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
130
+ "ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
131
+ "ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
132
+ "ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
133
+ "ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
134
+ "ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
135
+ "ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
136
+ "ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
137
+ "ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
138
+ "ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
139
+ "ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
140
+ "ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
141
+ "ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
142
+ "ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
143
+ "ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
144
+ "ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
145
+ plan_start.planned_departure AS planned_start_timestamp,
146
+ x.*,
147
+ cis_stop.cis_stop_platform_code as "cis_stop_platform_code",
148
+ run.run_number as "run.run_number"
149
+ from
150
+ "ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
151
+ left join "ropidgtfs_run_numbers" as run on
152
+ "ropidgtfs_precomputed_departures"."trip_id" = run.trip_id
153
+ and "ropidgtfs_precomputed_departures"."service_id" = run.service_id
154
+ left outer join v_vehiclepositions_trip_position_vehicle_info as x on
155
+ "ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
156
+ left join lateral (
157
+ select pd.departure_datetime as planned_departure
158
+ from ropidgtfs_precomputed_departures pd
159
+ where pd.trip_id = "ropidgtfs_precomputed_departures".trip_id
160
+ and pd.date = "ropidgtfs_precomputed_departures".date
161
+ and pd.stop_sequence = 1
162
+ limit 1
163
+ ) as plan_start on true
164
+ left join vehiclepositions_cis_stops as cis_stop on
165
+ cis_stop.rt_trip_id = x."trip.id"
166
+ and cis_stop.cis_stop_group_id = "ropidgtfs_precomputed_departures"."cis_stop_group_id"
167
+ ) departure_boards_detailed
168
+ where
169
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
170
+ and (
171
+ (
172
+ (
173
+ (mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
174
+ or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
175
+ )
176
+ and
177
+ (
178
+ 0 = isNegativeMinutesBefore
179
+ or ( -- pro záporné minutes before
180
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
181
+ or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
182
+ )
183
+ )
184
+
185
+ )
186
+ or (
187
+ departure_boards_detailed."trip.is_canceled" = true
188
+ and
189
+ (
190
+ (mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
191
+ or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
192
+ )
193
+ )
194
+ ) and
195
+ (
196
+ (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
197
+ 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
198
+ or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
199
+ );
200
+ $$;
@@ -20,7 +20,6 @@ class VehiclePositionsController extends controllers_1.BaseController {
20
20
  const dataBatches = this.splitData(inputData);
21
21
  for (const batch of dataBatches) {
22
22
  await this.sendMessageToExchange("input." + this.queuePrefix + ".saveDataToDB", JSON.stringify(batch), {
23
- persistent: true,
24
23
  timestamp: new Date().getTime(),
25
24
  });
26
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VehiclePositionsController.js","sourceRoot":"","sources":["../../../src/input-gateway/vehicle-positions/VehiclePositionsController.ts"],"names":[],"mappings":";;;AAAA,kFAA0D;AAG1D,wEAAqE;AACrE,8EAA8E;AAC9E,8DAA6E;AAC7E,6EAA8F;AAC9F,mFAAkF;AAElF,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAa,0BAA2B,SAAQ,4BAAc;IAM1D;QACI,KAAK,CACD,oCAAgB,CAAC,IAAI,EACrB,IAAI,uCAAmB,CAAC,oCAAgB,CAAC,IAAI,GAAG,YAAY,EAAE,oCAAgB,CAAC,oBAAoB,CAAC,CACvG,CAAC;QAMN;;WAEG;QACI,gBAAW,GAAG,KAAK,EAAE,SAA2B,EAAiB,EAAE;YACtE,IAAI;gBACA,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;gBAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC9C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;oBAC7B,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;wBACnG,UAAU,EAAE,IAAI;wBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;qBAClC,CAAC,CAAC;iBACN;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;oBACrC,MAAM,GAAG,CAAC;iBACb;qBAAM;oBACH,MAAM,IAAI,6BAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;iBACrF;aACJ;QACL,CAAC,CAAC;QAEM,cAAS,GAAG,CAAC,IAAsB,EAAsB,EAAE;YAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;YAED,MAAM,MAAM,GAAuB,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;gBAChF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;aACvC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QAtCE,MAAM,MAAM,GAAG,2BAAqB,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QACpF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,4CAA4C,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;CAoCJ;AAlDD,gEAkDC"}
1
+ {"version":3,"file":"VehiclePositionsController.js","sourceRoot":"","sources":["../../../src/input-gateway/vehicle-positions/VehiclePositionsController.ts"],"names":[],"mappings":";;;AAAA,kFAA0D;AAG1D,wEAAqE;AACrE,8EAA8E;AAC9E,8DAA6E;AAC7E,6EAA8F;AAC9F,mFAAkF;AAElF,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAa,0BAA2B,SAAQ,4BAAc;IAM1D;QACI,KAAK,CACD,oCAAgB,CAAC,IAAI,EACrB,IAAI,uCAAmB,CAAC,oCAAgB,CAAC,IAAI,GAAG,YAAY,EAAE,oCAAgB,CAAC,oBAAoB,CAAC,CACvG,CAAC;QAMN;;WAEG;QACI,gBAAW,GAAG,KAAK,EAAE,SAA2B,EAAiB,EAAE;YACtE,IAAI;gBACA,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;gBAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC9C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;oBAC7B,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;wBACnG,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;qBAClC,CAAC,CAAC;iBACN;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;oBACrC,MAAM,GAAG,CAAC;iBACb;qBAAM;oBACH,MAAM,IAAI,6BAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;iBACrF;aACJ;QACL,CAAC,CAAC;QAEM,cAAS,GAAG,CAAC,IAAsB,EAAsB,EAAE;YAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;YAED,MAAM,MAAM,GAAuB,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;gBAChF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;aACvC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QArCE,MAAM,MAAM,GAAG,2BAAqB,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QACpF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,4CAA4C,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;CAmCJ;AAjDD,gEAiDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DelayComputationRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DelayComputationRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.ts"],"names":[],"mappings":"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"}
@@ -1 +1,7 @@
1
1
  export declare const MPS_TO_KMH = 3.6;
2
+ /**
3
+ * The ratio of the lock timeout to the refresh interval.
4
+ * This is used to determine how long to wait before refreshing the lock.
5
+ * The refresh interval checks if the lock is still held and if not, it will reset the lock timeout.
6
+ */
7
+ export declare const LOCK_REFRESH_INTERVAL_RATIO = 0.65;
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MPS_TO_KMH = void 0;
3
+ exports.LOCK_REFRESH_INTERVAL_RATIO = exports.MPS_TO_KMH = void 0;
4
4
  exports.MPS_TO_KMH = 3.6;
5
+ /**
6
+ * The ratio of the lock timeout to the refresh interval.
7
+ * This is used to determine how long to wait before refreshing the lock.
8
+ * The refresh interval checks if the lock is still held and if not, it will reset the lock timeout.
9
+ */
10
+ exports.LOCK_REFRESH_INTERVAL_RATIO = 0.65;
5
11
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,GAAG,CAAC;AAE9B;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,IAAI,CAAC"}
@@ -9,8 +9,16 @@ export declare class GenerateFilesTask extends AbstractEmptyTask {
9
9
  private readonly gtfsRtRedisRepository;
10
10
  private readonly alertsGenerator;
11
11
  private readonly vehicleDescriptor;
12
+ private lockTimeout;
13
+ private refreshInterval;
12
14
  constructor(queuePrefix: string);
13
15
  protected execute(): Promise<void>;
16
+ private logFinishTime;
17
+ private readStopTimeIds;
18
+ private speedMpsToKmh;
19
+ private feedEntityFromTripData;
20
+ private stopTimeUpdatesFromVehicleTrip;
21
+ protected generateFiles(): Promise<void>;
14
22
  /**
15
23
  * Get rid of vehicle descriptors with duplicate IDs from a given GTFS-RT message
16
24
  *
@@ -43,4 +51,5 @@ export declare class GenerateFilesTask extends AbstractEmptyTask {
43
51
  private validateAndSaveBuffer;
44
52
  private shouldFallbackToScheduleTime;
45
53
  private handleCanceledTrip;
54
+ private createMutex;
46
55
  }
@@ -23,12 +23,16 @@ const workers_1 = require("@golemio/core/dist/integration-engine/workers");
23
23
  const WebhookDecorators_1 = require("@golemio/core/dist/integration-engine/workers/helpers/WebhookDecorators");
24
24
  const CloudflareCachePurgeWebhook_1 = require("@golemio/core/dist/integration-engine/workers/webhooks/CloudflareCachePurgeWebhook");
25
25
  const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
26
+ const connectors_1 = require("@golemio/core/dist/integration-engine/connectors");
27
+ const redis_semaphore_1 = require("@golemio/core/dist/shared/redis-semaphore");
28
+ const promises_1 = require("node:timers/promises");
26
29
  const ovapi_gtfs_realtime_bindings_1 = require("@golemio/ovapi-gtfs-realtime-bindings");
27
30
  const const_1 = require("../../../../../const");
28
31
  const GtfsRtRedisRepository_1 = require("../data-access/GtfsRtRedisRepository");
29
32
  const AlertsGenerator_1 = require("../helpers/AlertsGenerator");
30
33
  const VehicleDescriptor_1 = require("../helpers/VehicleDescriptor");
31
34
  const const_2 = require("../helpers/const");
35
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
32
36
  class GenerateFilesTask extends workers_1.AbstractEmptyTask {
33
37
  constructor(queuePrefix) {
34
38
  super(queuePrefix);
@@ -44,14 +48,45 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
44
48
  const vymiRoutesRepository = new ropid_vymi_1.RopidVYMIEventsRoutesModel();
45
49
  this.alertsGenerator = new AlertsGenerator_1.AlertsGenerator(GenerateFilesTask.config, this.gtfsRtRedisRepository, jisEventsRepository, vymiEventsRepository, vymiRoutesRepository);
46
50
  this.vehicleDescriptor = new VehicleDescriptor_1.VehicleDescriptor();
51
+ // should finish under 10 seconds
52
+ this.lockTimeout = GenerateFilesTask.config.getValue("module.pid.vehicle-positions.gtfsRealtime.mutexLockTimeout", 10000);
53
+ this.refreshInterval = this.lockTimeout * const_2.LOCK_REFRESH_INTERVAL_RATIO;
47
54
  }
48
55
  async execute() {
49
- const startDateTime = new Date();
50
- const tripData = await this.tripsRepository.findAllForGTFSRt(startDateTime);
51
- const feedHeader = this.createFeedHeader();
52
- const updatesMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
53
- const positionsMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
54
- const pidFeedMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
56
+ const startTimeMs = Date.now();
57
+ const mutex = this.createMutex();
58
+ const lockAcquired = await mutex.tryAcquire();
59
+ if (!lockAcquired) {
60
+ this.logger.info(`${this.constructor.name}: mutex lock was not acquired, other task instance is running.`);
61
+ return;
62
+ }
63
+ try {
64
+ await this.generateFiles();
65
+ }
66
+ catch (err) {
67
+ if (err instanceof golemio_errors_1.AbstractGolemioError) {
68
+ throw err;
69
+ }
70
+ else {
71
+ throw new golemio_errors_1.GeneralError("Error while processing task to generate files for GTFS-RT.", this.constructor.name, err);
72
+ }
73
+ }
74
+ finally {
75
+ await mutex.release();
76
+ }
77
+ const ellapsedTimeInMs = Date.now() - startTimeMs;
78
+ this.logFinishTime(ellapsedTimeInMs);
79
+ if (ellapsedTimeInMs < this.refreshInterval) {
80
+ await (0, promises_1.setTimeout)(Math.abs(this.refreshInterval - ellapsedTimeInMs));
81
+ }
82
+ integration_engine_1.QueueManager.sendMessageToExchange(this.queuePrefix, this.queueName, {});
83
+ }
84
+ logFinishTime(ellapsedTimeInMs) {
85
+ const outrunLockTimeoutMsg = ellapsedTimeInMs > this.lockTimeout ? "Slow" : "OK";
86
+ const logLevel = ellapsedTimeInMs > this.lockTimeout ? "warn" : "info";
87
+ this.logger[logLevel](`${this.constructor.name}: finished in ${ellapsedTimeInMs}ms = ${outrunLockTimeoutMsg}.`);
88
+ }
89
+ readStopTimeIds(tripData) {
55
90
  const stopTimesIds = [];
56
91
  for (const tripRecord of tripData) {
57
92
  const { id } = this.vehicleDescriptor.getVehicleDescriptor(tripRecord);
@@ -59,6 +94,47 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
59
94
  stopTimesIds.push(`${id}-${tripRecord.gtfs_trip_id}`);
60
95
  }
61
96
  }
97
+ return stopTimesIds;
98
+ }
99
+ speedMpsToKmh(speed) {
100
+ return speed ? parseFloat((speed / const_2.MPS_TO_KMH).toFixed(2)) : null;
101
+ }
102
+ feedEntityFromTripData(tripRecord, entityTimestamp, tripDescriptor, vehicleDescriptor) {
103
+ const feedEntity = {
104
+ id: tripRecord.id,
105
+ vehicle: {
106
+ currentStopSequence: tripRecord.last_position.last_stop_sequence,
107
+ position: {
108
+ bearing: tripRecord.last_position.bearing,
109
+ latitude: tripRecord.last_position.lat,
110
+ longitude: tripRecord.last_position.lng,
111
+ speed: this.speedMpsToKmh(tripRecord.last_position.speed),
112
+ },
113
+ timestamp: entityTimestamp,
114
+ trip: tripDescriptor,
115
+ vehicle: vehicleDescriptor,
116
+ },
117
+ };
118
+ return feedEntity;
119
+ }
120
+ stopTimeUpdatesFromVehicleTrip(stopTimes, vehicleDescriptor, tripRecord) {
121
+ if (typeof vehicleDescriptor.id === "string") {
122
+ const stopTimesForVehicle = stopTimes.get(`${vehicleDescriptor.id}-${tripRecord.gtfs_trip_id}`);
123
+ const stopTimeUpdates = this.generateStopTimeUpdate(tripRecord.gtfs_route_type, stopTimesForVehicle, tripRecord.last_position);
124
+ return stopTimeUpdates;
125
+ }
126
+ this.logger.error(new golemio_errors_1.GeneralError(`Cannot get stopTimeUpdates for trip with unknown vehicleId and gtfsTripId \
127
+ '${tripRecord.gtfs_trip_id}'`, this.constructor.name, undefined, undefined, "pid"));
128
+ return [];
129
+ }
130
+ async generateFiles() {
131
+ const currentDate = new Date();
132
+ const tripData = await this.tripsRepository.findAllForGTFSRt(currentDate);
133
+ const feedHeader = this.createFeedHeader();
134
+ const updatesMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
135
+ const positionsMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
136
+ const pidFeedMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
137
+ const stopTimesIds = this.readStopTimeIds(tripData);
62
138
  if (stopTimesIds.length === 0) {
63
139
  this.logger.warn("No stop time ids found for GTFS-RT generation. Most likely no vehicles are running.");
64
140
  return;
@@ -84,34 +160,11 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
84
160
  tripId: tripRecord.gtfs_trip_id,
85
161
  routeId: tripRecord.gtfs_route_id,
86
162
  };
87
- let stopTimeUpdates = [];
88
- if (typeof vehicleDescriptor.id === "string") {
89
- const stopTimesForVehicle = stopTimes.get(`${vehicleDescriptor.id}-${tripRecord.gtfs_trip_id}`);
90
- stopTimeUpdates = this.generateStopTimeUpdate(tripRecord.gtfs_route_type, stopTimesForVehicle, tripRecord.last_position);
91
- }
92
- else {
93
- this.logger.error(new golemio_errors_1.GeneralError(`Cannot get stopTimeUpdates for trip with unknown vehicleId and gtfsTripId \
94
- '${tripRecord.gtfs_trip_id}'`, this.constructor.name, undefined, undefined, "pid"));
95
- }
163
+ const stopTimeUpdates = this.stopTimeUpdatesFromVehicleTrip(stopTimes, vehicleDescriptor, tripRecord);
96
164
  const shouldSkipTripUpdate = stopTimeUpdates.every((el) => el.scheduleRelationship === ovapi_gtfs_realtime_bindings_1.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.NO_DATA ||
97
165
  gtfsTripIdMap[tripRecord.gtfs_trip_id]);
98
166
  entityTripStarts.push(tripRecord.start_timestamp);
99
- const positionEntity = {
100
- id: tripRecord.id,
101
- vehicle: {
102
- currentStopSequence: tripRecord.last_position.last_stop_sequence,
103
- position: {
104
- bearing: tripRecord.last_position.bearing,
105
- latitude: tripRecord.last_position.lat,
106
- longitude: tripRecord.last_position.lng,
107
- speed: tripRecord.last_position.speed &&
108
- parseFloat((tripRecord.last_position.speed / const_2.MPS_TO_KMH).toFixed(2)),
109
- },
110
- timestamp: entityTimestamp,
111
- trip: tripDescriptor,
112
- vehicle: vehicleDescriptor,
113
- },
114
- };
167
+ const positionEntity = this.feedEntityFromTripData(tripRecord, entityTimestamp, tripDescriptor, vehicleDescriptor);
115
168
  const positionsMessageEntity = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedEntity.fromObject(positionEntity);
116
169
  positionsMessage.entity.push(positionsMessageEntity);
117
170
  feedMessageEntity = structuredClone(positionsMessageEntity);
@@ -142,10 +195,16 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
142
195
  }
143
196
  this.removeDuplicateVehicleDescriptors(positionsMessage, entityTripStarts);
144
197
  this.removeDuplicateVehicleDescriptors(pidFeedMessage, entityTripStarts, { shouldRemoveVehicleOnly: true });
145
- this.validateAndSaveBuffer("trip_updates", updatesMessage);
146
- this.validateAndSaveBuffer("vehicle_positions", positionsMessage);
147
- this.validateAndSaveBuffer("pid_feed", pidFeedMessage);
148
- await this.alertsGenerator.generateAlerts(feedHeader);
198
+ const results = await Promise.allSettled([
199
+ this.validateAndSaveBuffer("trip_updates", updatesMessage),
200
+ this.validateAndSaveBuffer("vehicle_positions", positionsMessage),
201
+ this.validateAndSaveBuffer("pid_feed", pidFeedMessage),
202
+ this.alertsGenerator.generateAlerts(feedHeader),
203
+ ]);
204
+ const rejectedPromise = results.find((result) => result.status === "rejected");
205
+ if (rejectedPromise) {
206
+ throw rejectedPromise.reason;
207
+ }
149
208
  }
150
209
  /**
151
210
  * Get rid of vehicle descriptors with duplicate IDs from a given GTFS-RT message
@@ -249,7 +308,7 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
249
308
  const header = {
250
309
  gtfsRealtimeVersion: "2.0",
251
310
  incrementality: ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedHeader.Incrementality.FULL_DATASET,
252
- timestamp: Math.round(new Date().getTime() / 1000),
311
+ timestamp: Math.round(Date.now() / 1000),
253
312
  };
254
313
  return ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedHeader.fromObject(header);
255
314
  }
@@ -264,15 +323,15 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
264
323
  ("0" + startTimestamp.getUTCDate()).slice(-2);
265
324
  return formattedDate;
266
325
  }
267
- validateAndSaveBuffer(feedName, message) {
326
+ async validateAndSaveBuffer(feedName, message) {
268
327
  const feedMessageVerificationResult = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.verify(message);
269
328
  if (feedMessageVerificationResult !== null) {
270
329
  this.logger.error(new golemio_errors_1.GeneralError(`Invalid GTFS-RT message for feed '${feedName}'`, this.constructor.name, feedMessageVerificationResult, undefined, "pid"));
271
330
  return;
272
331
  }
273
332
  const buffer = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.encode(message).finish();
274
- this.gtfsRtRedisRepository.set(feedName + "_timestamp", message.header.timestamp);
275
- this.gtfsRtRedisRepository.hset(feedName + ".pb", buffer.toString("binary"));
333
+ await this.gtfsRtRedisRepository.set(feedName + "_timestamp", message.header.timestamp);
334
+ await this.gtfsRtRedisRepository.hset(feedName + ".pb", buffer.toString("binary"));
276
335
  }
277
336
  shouldFallbackToScheduleTime(vehiclePosition) {
278
337
  return ((vehiclePosition.state_position === const_1.StatePositionEnum.BEFORE_TRACK ||
@@ -298,6 +357,17 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
298
357
  updatesMessage.entity.push(feedEntity);
299
358
  return feedEntity;
300
359
  }
360
+ createMutex() {
361
+ const redisClient = connectors_1.RedisConnector.getConnection();
362
+ return new redis_semaphore_1.Mutex(redisClient, this.queueName, {
363
+ acquireAttemptsLimit: 1,
364
+ lockTimeout: this.lockTimeout,
365
+ refreshInterval: this.refreshInterval,
366
+ onLockLost: (err) => {
367
+ this.logger.info(`${this.constructor.name}: mutex lock was lost, will be generated in next task run.`);
368
+ },
369
+ });
370
+ }
301
371
  }
302
372
  exports.GenerateFilesTask = GenerateFilesTask;
303
373
  GenerateFilesTask.config = Di_2.VPContainer.resolve(CoreToken_1.CoreToken.SimpleConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"GenerateFilesTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenerateFilesTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PropagateTrainDelayTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PropagateTrainDelayTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.ts"],"names":[],"mappings":";;;AACA,sDAA2D;AAC3D,gGAAqF;AAErF,wEAAqE;AAErE,mEAAuF;AACvF,mEAAyD;AAGzD,mFAAqF;AACrF,sFAAmF;AAEnF,MAAa,uBAAwB,SAAQ,uDAAqD;IAU9F,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QAVP,cAAS,GAAG,qBAAqB,CAAC;QAClC,aAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;QACtC,WAAM,GAAG,0DAA8B,CAAC;QAiEhD,sBAAiB,GAAG,KAAK,EAC7B,aAAiC,EACjC,eAAuB,EACI,EAAE;YAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;gBAC5C,UAAU,EAAE,CAAC,cAAc,CAAC;gBAC5B,KAAK,EAAE;oBACH,aAAa,EAAE,aAAa;oBAC5B,eAAe,EAAE,EAAE,CAAC,cAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE;iBAChD;gBACD,KAAK,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBACnC,GAAG,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,OAAO,IAAI,EAAE,YAAY,CAAC;QAC9B,CAAC,CAAC;QAvEE,IAAI,CAAC,MAAM,GAAG,gCAA0B,CAAC,OAAO,CAAU,qBAAS,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,oBAAoB,GAAG,uBAAkB,CAAC,OAAO,CAClD,iDAAuB,CAAC,yBAAyB,CACpD,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,gCAA0B,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CACnD,sEAAsE,EACtE,CAAC,CACM,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,KAAgC;QACpD,KAAK,MAAM,gBAAgB,IAAI,KAAK,CAAC,IAAI,EAAE;YACvC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,2BAA2B,EAAE,eAAe,EAAE,aAAa,EAAE,GAC9F,gBAAgB,CAAC,IAAI,CAAC;YAC1B,IAAI;gBACA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;gBAEpF,IAAI,CAAC,cAAc,EAAE;oBACjB,SAAS;iBACZ;gBACD,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAc,CAAC,CAAsB,CAAC;gBAEhG,MAAM,mBAAmB,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;gBACpF,MAAM,iBAAiB,GAAG,YAAY,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;gBACjF,MAAM,yBAAyB,GAC3B,mBAAmB,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC;gBAErF,MAAM,IAAI,CAAC,yBAAyB,CAAC;oBACjC,iBAAiB,EAAE,YAAY;oBAC/B,kBAAkB,EAAE,aAAa,IAAI,IAAI;oBACzC,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,eAAe;oBACjE,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,cAAc;oBACtD,yBAAyB,EAAE,2BAA2B;oBACtD,gBAAgB,EAAE,eAAe;oBACjC,cAAc,EAAE,aAAc;oBAC9B,cAAc,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO;oBACjD,aAAa,EAAE,cAAc;wBACzB,CAAC,CAAC;4BACI;gCACI,OAAO,EAAE,cAAc;gCACvB,yBAAyB,EAAE,yBAAyB;6BACvD;yBACJ;wBACH,CAAC,CAAC,EAAE;oBACR,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ;iBACvD,CAAC,CAAC;aACN;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,SAAS,oDAAoD,YAAY,MAAM,GAAG,CAAC,OAAO,EAAE,CACvG,CAAC;aACL;SACJ;IACL,CAAC;CAkBJ;AApFD,0DAoFC"}
@@ -41,6 +41,7 @@ export interface IPIDDeparture {
41
41
  "trip.last_position.this_stop_sequence": number | null;
42
42
  "trip.cis_stop_platform_code": string | null;
43
43
  "trip.vehicle_descriptor.is_air_conditioned"?: boolean | null;
44
+ planned_start_timestamp: string | null;
44
45
  }
45
46
  export interface ITransferDeparture {
46
47
  departure_datetime_real: Date | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output-gateway/pid/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,4CAA0B;AAC1B,2CAAyB;AAgHzB,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,0CAAyB,CAAA;IACzB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;AACnB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,+BAAa,CAAA;IACb,yCAAuB,CAAA;AAC3B,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAED,IAAY,eAQX;AARD,WAAY,eAAe;IACvB,gCAAa,CAAA;IACb,2CAAwB,CAAA;IACxB,0DAAuC,CAAA;IACvC,oDAAiC,CAAA;IACjC,mEAAgD,CAAA;IAChD,qEAAkD,CAAA;IAClD,8EAA2D,CAAA;AAC/D,CAAC,EARW,eAAe,+BAAf,eAAe,QAQ1B;AAED,IAAY,aAMX;AAND,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;IACnB,sCAAqB,CAAA;IACrB,mCAAkB,CAAA;IAClB,8BAA8B;AAClC,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output-gateway/pid/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,4CAA0B;AAC1B,2CAAyB;AAiHzB,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,0CAAyB,CAAA;IACzB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;AACnB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,+BAAa,CAAA;IACb,yCAAuB,CAAA;AAC3B,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAED,IAAY,eAQX;AARD,WAAY,eAAe;IACvB,gCAAa,CAAA;IACb,2CAAwB,CAAA;IACxB,0DAAuC,CAAA;IACvC,oDAAiC,CAAA;IACjC,mEAAgD,CAAA;IAChD,qEAAkD,CAAA;IAClD,8EAA2D,CAAA;AAC/D,CAAC,EARW,eAAe,+BAAf,eAAe,QAQ1B;AAED,IAAY,aAMX;AAND,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;IACnB,sCAAqB,CAAA;IACrB,mCAAkB,CAAA;IAClB,8BAA8B;AAClC,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB"}
@@ -32,13 +32,17 @@ class SkipHelper {
32
32
  static isVehicleMissing(departure, runScheduleMap, untrackedTrips, nowDate = new Date()) {
33
33
  // Not missing if essential trip data is missing or if delay information is available
34
34
  if (!("trip.start_timestamp" in departure) ||
35
- departure["trip.start_timestamp"] === null ||
36
35
  departure.run_number === null ||
37
36
  departure.route_id === null ||
38
37
  departure.is_delay_available) {
39
38
  return false;
40
39
  }
41
- const startTimestamp = new Date(departure["trip.start_timestamp"]);
40
+ // Use fallback to planned_start_timestamp if trip.start_timestamp is null
41
+ const rawStartTimestamp = departure["trip.start_timestamp"] ?? departure.planned_start_timestamp;
42
+ if (!rawStartTimestamp) {
43
+ return false;
44
+ }
45
+ const startTimestamp = new Date(rawStartTimestamp);
42
46
  const minutesToStart = (startTimestamp.getTime() - nowDate.getTime()) / 60000;
43
47
  /// Not missing if departure is too far in the future (threshold varies for metro)
44
48
  if (this.isOutsideStartThreshold(minutesToStart, departure.route_type)) {
@@ -1 +1 @@
1
- {"version":3,"file":"SkipHelper.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/models/helpers/SkipHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SkipHelper.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/models/helpers/SkipHelper.ts"],"names":[],"mappings":"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"}
@@ -60,7 +60,9 @@ flowchart TD;
60
60
  - Feedy jsou nabízený přes API `/v2/vehiclepositions/gtfsrt/{feed}`, kde `{feed}` je název feedu s příponou `.pb`
61
61
  - Žádaný feed se načte pomocí `HGET` a vrátí se jako binární blob. Pokud feed neexistuje, vrátí se 404
62
62
  - Pomocný timestamp se načte pomocí `GET` a vrátí se jako hodnota hlavičky `Last-Modified` převedená na ISO string. Pokud timestamp neexistuje, hodnota hlavičky bude unix timestamp 0 jako ISO string. Využívá se především pro monitoring a alerting
63
- - Feedy se generují 3x za minutu (rabín 2x)
63
+ - Feedy se generují nejméně 3x za minutu (rabín 2x) pomocí queue-message
64
+ - Používají redis-mutex na zamykání, aby neběželo více shodných tasků v jeden okamžik
65
+ - Pokud generování stíhá běžet rychleji, task se snaží do ±7 vteřin svého běhu spustit nové generování souborů (opět přes queue-message).
64
66
 
65
67
  ### Flowchart
66
68
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/pid",
3
- "version": "3.15.0",
3
+ "version": "3.15.1-dev.1824469495",
4
4
  "description": "Golemio PID Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -76,7 +76,7 @@
76
76
  "@golemio/core": ">=1.16.0-rc.1551191551"
77
77
  },
78
78
  "dependencies": {
79
- "@golemio/ovapi-gtfs-realtime-bindings": "1.2.3",
79
+ "@golemio/ovapi-gtfs-realtime-bindings": "1.2.4-dev.1288219308",
80
80
  "@turf/turf": "^6.5.0",
81
81
  "cheap-ruler": "^3.0.2",
82
82
  "csv-parser": "^3.0.0",
@@ -84,4 +84,4 @@
84
84
  "html-entities": "^2.3.3",
85
85
  "pg-copy-streams": "^5.1.1"
86
86
  }
87
- }
87
+ }