@golemio/pid 3.5.1 → 3.5.2-dev.1636139600

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 (61) hide show
  1. package/db/migrations/postgresql/20250103092631-skip-missing.js +53 -0
  2. package/db/migrations/postgresql/20250109122504-braking-down-mapping-queries.js +53 -0
  3. package/db/migrations/postgresql/sqls/20250103092631-skip-missing-down.sql +184 -0
  4. package/db/migrations/postgresql/sqls/20250103092631-skip-missing-up.sql +195 -0
  5. package/db/migrations/postgresql/sqls/20250109122504-braking-down-mapping-queries-down.sql +12 -0
  6. package/db/migrations/postgresql/sqls/20250109122504-braking-down-mapping-queries-up.sql +139 -0
  7. package/dist/integration-engine/ropid-gtfs/data-access/cache/RunTripsRedisRepository.js +2 -1
  8. package/dist/integration-engine/ropid-gtfs/data-access/cache/RunTripsRedisRepository.js.map +1 -1
  9. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +6 -5
  10. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
  11. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/RawQueryProvider.d.ts +1 -1
  12. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/RawQueryProvider.js +101 -165
  13. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/RawQueryProvider.js.map +1 -1
  14. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
  15. package/dist/output-gateway/pid/controllers/v2/V2DepartureBoardsController.js +1 -3
  16. package/dist/output-gateway/pid/controllers/v2/V2DepartureBoardsController.js.map +1 -1
  17. package/dist/output-gateway/pid/domain/DepartureInterfaces.d.ts +7 -0
  18. package/dist/output-gateway/pid/domain/DepartureInterfaces.js +3 -0
  19. package/dist/output-gateway/pid/domain/DepartureInterfaces.js.map +1 -0
  20. package/dist/output-gateway/pid/index.d.ts +4 -5
  21. package/dist/output-gateway/pid/index.js +1 -0
  22. package/dist/output-gateway/pid/index.js.map +1 -1
  23. package/dist/output-gateway/pid/ioc/Di.js +4 -0
  24. package/dist/output-gateway/pid/ioc/Di.js.map +1 -1
  25. package/dist/output-gateway/pid/ioc/OgPidToken.d.ts +2 -0
  26. package/dist/output-gateway/pid/ioc/OgPidToken.js +2 -0
  27. package/dist/output-gateway/pid/ioc/OgPidToken.js.map +1 -1
  28. package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.d.ts +14 -28
  29. package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js +192 -72
  30. package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js.map +1 -1
  31. package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js +26 -15
  32. package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js.map +1 -1
  33. package/dist/output-gateway/pid/models/helpers/SkipHelper.d.ts +11 -0
  34. package/dist/output-gateway/pid/models/helpers/SkipHelper.js +91 -0
  35. package/dist/output-gateway/pid/models/helpers/SkipHelper.js.map +1 -1
  36. package/dist/output-gateway/pid/models/helpers/const.d.ts +4 -0
  37. package/dist/output-gateway/pid/models/helpers/const.js +8 -0
  38. package/dist/output-gateway/pid/models/helpers/const.js.map +1 -0
  39. package/dist/output-gateway/pid/models/helpers/interfaces/IPIDDepartureQueryOptions.d.ts +3 -0
  40. package/dist/output-gateway/pid/models/interfaces/IGetDeparturesOptions.d.ts +21 -0
  41. package/dist/output-gateway/pid/models/interfaces/IGetDeparturesOptions.js +3 -0
  42. package/dist/output-gateway/pid/models/interfaces/IGetDeparturesOptions.js.map +1 -0
  43. package/dist/output-gateway/pid/service/facade/TransferFacade.js +2 -0
  44. package/dist/output-gateway/pid/service/facade/TransferFacade.js.map +1 -1
  45. package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.d.ts +4 -2
  46. package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.js +90 -68
  47. package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.js.map +1 -1
  48. package/dist/output-gateway/public/domain/repository/IVehiclePositionsRepository.d.ts +2 -1
  49. package/dist/output-gateway/ropid-gtfs/data-access/redis/RunTripsRedisRepository.d.ts +10 -0
  50. package/dist/output-gateway/ropid-gtfs/data-access/redis/RunTripsRedisRepository.js +65 -0
  51. package/dist/output-gateway/ropid-gtfs/data-access/redis/RunTripsRedisRepository.js.map +1 -0
  52. package/dist/output-gateway/ropid-gtfs/domain/repository/IRunTripsRedisRepository.d.ts +4 -0
  53. package/dist/output-gateway/ropid-gtfs/domain/repository/IRunTripsRedisRepository.js +3 -0
  54. package/dist/output-gateway/ropid-gtfs/domain/repository/IRunTripsRedisRepository.js.map +1 -0
  55. package/dist/output-gateway/shared/constants/validations.js +1 -1
  56. package/dist/output-gateway/shared/constants/validations.js.map +1 -1
  57. package/dist/schema-definitions/ropid-gtfs/redis/const.d.ts +1 -0
  58. package/dist/schema-definitions/ropid-gtfs/redis/const.js +2 -1
  59. package/dist/schema-definitions/ropid-gtfs/redis/const.js.map +1 -1
  60. package/docs/openapi-output.yaml +10 -2
  61. 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', '20250103092631-skip-missing-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', '20250103092631-skip-missing-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,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', '20250109122504-braking-down-mapping-queries-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', '20250109122504-braking-down-mapping-queries-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,184 @@
1
+ -- Remove columns in the resulting table of the get_departures function
2
+ -- - trip.start_timestamp
3
+ -- - trip.end_timestamp
4
+ -- - trip.start_stop_id
5
+
6
+ drop function get_departures;
7
+ create function get_departures (
8
+ stopsIds varchar,
9
+ mode int,
10
+ dateDepartureBetweenStart timestamptz,
11
+ dateDepartureBetweenEnd timestamptz,
12
+ isNegativeMinutesBefore int,
13
+ dateCanceledDepartureBetweenStart timestamptz,
14
+ dateCanceledDepartureBetweenEnd timestamptz,
15
+ airconditioninfoenabled int
16
+ )
17
+ returns table (
18
+ departure_datetime_real timestamptz,
19
+ arrival_datetime_real timestamptz,
20
+ stop_sequence int2,
21
+ stop_headsign varchar(70),
22
+ arrival_datetime timestamptz,
23
+ departure_datetime timestamptz,
24
+ stop_id varchar(25),
25
+ platform_code varchar(10),
26
+ wheelchair_boarding int2,
27
+ min_stop_sequence int2,
28
+ max_stop_sequence int2,
29
+ trip_id varchar(50),
30
+ trip_headsign varchar(100),
31
+ trip_short_name varchar(30),
32
+ wheelchair_accessible int2,
33
+ route_short_name varchar(50),
34
+ route_type int2,
35
+ route_id varchar(20),
36
+ is_night bpchar(1),
37
+ is_regional bpchar(1),
38
+ is_substitute_transport bpchar(1),
39
+ next_stop_id varchar(30),
40
+ delay_seconds int4,
41
+ real_wheelchair_accessible bool,
42
+ is_canceled bool,
43
+ "trip.gtfs_trip_short_name" varchar(255),
44
+ "trip.gtfs_date" date,
45
+ "trip.internal_route_name" varchar(50),
46
+ "trip.internal_run_number" int4,
47
+ "trip.last_position.last_stop_id" varchar(255),
48
+ "trip.last_position.last_stop_sequence" int4,
49
+ "trip.last_position.last_stop_name" varchar(255),
50
+ "trip.last_position.this_stop_sequence" int4,
51
+ "trip.cis_stop_platform_code" varchar(15),
52
+ "trip.vehicle_descriptor.is_air_conditioned" bool,
53
+ delay_minutes int4,
54
+ is_delay_available bool
55
+ )
56
+ language SQL
57
+ set search_path from current
58
+ as $$
59
+ select
60
+ departure_boards_detailed."computed.departure_datetime_real",
61
+ departure_boards_detailed."computed.arrival_datetime_real",
62
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
63
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
64
+ departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
65
+ departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
66
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
67
+ departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
68
+ departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
69
+ departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
70
+ departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
71
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
72
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
73
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
74
+ departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
75
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
76
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
77
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
78
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
79
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
80
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
81
+ departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
82
+ departure_boards_detailed."delay_seconds",
83
+ departure_boards_detailed."real_wheelchair_accessible",
84
+ departure_boards_detailed."is_canceled",
85
+ departure_boards_detailed."trip.gtfs_trip_short_name",
86
+ departure_boards_detailed."trip.gtfs_date",
87
+ departure_boards_detailed."trip.internal_route_name",
88
+ departure_boards_detailed."trip.internal_run_number",
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
+ from (
98
+ select
99
+ ("departure_datetime"
100
+ + MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
101
+ - case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
102
+ then least (
103
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
104
+ ("departure_datetime" - "arrival_datetime")::interval
105
+ )
106
+ else MAKE_INTERVAL()
107
+ end
108
+ ) "computed.departure_datetime_real",
109
+ "arrival_datetime" + MAKE_INTERVAL(secs => (
110
+ CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
111
+ )) "computed.arrival_datetime_real",
112
+ "ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
113
+ "ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
114
+ "ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
115
+ "ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
116
+ "ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
117
+ "ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
118
+ "ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
119
+ "ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
120
+ "ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
121
+ "ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
122
+ "ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
123
+ "ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
124
+ "ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
125
+ "ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
126
+ "ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
127
+ "ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
128
+ "ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
129
+ "ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
130
+ "ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
131
+ "ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
132
+ "ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
133
+ "ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
134
+ "ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
135
+ "ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
136
+ "ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
137
+ "ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
138
+ "ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
139
+ "ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
140
+ "ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
141
+ "ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
142
+ x.*,
143
+ cis_stop.cis_stop_platform_code as "cis_stop_platform_code"
144
+ from
145
+ "ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
146
+ left outer join v_vehiclepositions_trip_position_vehicle_info as x on
147
+ "ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
148
+ left join vehiclepositions_cis_stops as cis_stop on
149
+ cis_stop.rt_trip_id = x."trip.id"
150
+ and cis_stop.cis_stop_group_id = "ropidgtfs_precomputed_departures"."cis_stop_group_id"
151
+ ) departure_boards_detailed
152
+ where
153
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
154
+ and (
155
+ (
156
+ (
157
+ (mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
158
+ or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
159
+ )
160
+ and
161
+ (
162
+ 0 = isNegativeMinutesBefore
163
+ or ( -- pro záporné minutes before
164
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
165
+ or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
166
+ )
167
+ )
168
+
169
+ )
170
+ or (
171
+ departure_boards_detailed."trip.is_canceled" = true
172
+ and
173
+ (
174
+ (mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
175
+ or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
176
+ )
177
+ )
178
+ ) and
179
+ (
180
+ (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
181
+ 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
182
+ or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
183
+ );
184
+ $$;
@@ -0,0 +1,195 @@
1
+ -- Add columns in the resulting table of the get_departures function
2
+ -- + trip.start_timestamp
3
+ -- + origin_route_name
4
+ -- + run_number
5
+
6
+ drop function get_departures;
7
+ create function get_departures (
8
+ stopsIds varchar,
9
+ mode int,
10
+ dateDepartureBetweenStart timestamptz,
11
+ dateDepartureBetweenEnd timestamptz,
12
+ isNegativeMinutesBefore int,
13
+ dateCanceledDepartureBetweenStart timestamptz,
14
+ dateCanceledDepartureBetweenEnd timestamptz,
15
+ airconditioninfoenabled int
16
+ )
17
+ returns table (
18
+ departure_datetime_real timestamptz,
19
+ arrival_datetime_real timestamptz,
20
+ stop_sequence int2,
21
+ stop_headsign varchar(70),
22
+ arrival_datetime timestamptz,
23
+ departure_datetime timestamptz,
24
+ stop_id varchar(25),
25
+ platform_code varchar(10),
26
+ wheelchair_boarding int2,
27
+ min_stop_sequence int2,
28
+ max_stop_sequence int2,
29
+ trip_id varchar(50),
30
+ trip_headsign varchar(100),
31
+ trip_short_name varchar(30),
32
+ wheelchair_accessible int2,
33
+ route_short_name varchar(50),
34
+ route_type int2,
35
+ route_id varchar(20),
36
+ is_night bpchar(1),
37
+ is_regional bpchar(1),
38
+ is_substitute_transport bpchar(1),
39
+ next_stop_id varchar(30),
40
+ delay_seconds int4,
41
+ real_wheelchair_accessible bool,
42
+ is_canceled bool,
43
+ "trip.gtfs_trip_short_name" varchar(255),
44
+ "trip.gtfs_date" date,
45
+ "trip.internal_route_name" varchar(50),
46
+ "trip.internal_run_number" int4,
47
+ "trip.start_timestamp" timestamptz,
48
+ "trip.last_position.last_stop_id" varchar(255),
49
+ "trip.last_position.last_stop_sequence" int4,
50
+ "trip.last_position.last_stop_name" varchar(255),
51
+ "trip.last_position.this_stop_sequence" int4,
52
+ "trip.cis_stop_platform_code" varchar(15),
53
+ "trip.vehicle_descriptor.is_air_conditioned" bool,
54
+ delay_minutes int4,
55
+ is_delay_available bool,
56
+ origin_route_name varchar(50),
57
+ run_number int4
58
+ )
59
+ language SQL
60
+ set search_path from current
61
+ as $$
62
+ select
63
+ departure_boards_detailed."computed.departure_datetime_real",
64
+ departure_boards_detailed."computed.arrival_datetime_real",
65
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
66
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
67
+ departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
68
+ departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
69
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
70
+ departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
71
+ departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
72
+ departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
73
+ departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
74
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
75
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
76
+ departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
77
+ departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
78
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
79
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
80
+ departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
81
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
82
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
83
+ departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
84
+ departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
85
+ departure_boards_detailed."delay_seconds",
86
+ departure_boards_detailed."real_wheelchair_accessible",
87
+ departure_boards_detailed."is_canceled",
88
+ departure_boards_detailed."trip.gtfs_trip_short_name",
89
+ departure_boards_detailed."trip.gtfs_date",
90
+ departure_boards_detailed."trip.internal_route_name",
91
+ departure_boards_detailed."trip.internal_run_number",
92
+ departure_boards_detailed."trip.start_timestamp",
93
+ departure_boards_detailed."trip.last_position.last_stop_id",
94
+ departure_boards_detailed."trip.last_position.last_stop_sequence",
95
+ departure_boards_detailed."trip.last_position.last_stop_name",
96
+ departure_boards_detailed."trip.last_position.this_stop_sequence",
97
+ departure_boards_detailed.cis_stop_platform_code as "trip.cis_stop_platform_code",
98
+ case when airconditioninfoenabled = 1 then departure_boards_detailed."trip.vehicle_descriptor.is_air_conditioned" else NULL end,
99
+ TRUNC(departure_boards_detailed."trip.last_position.delay"::DECIMAL / 60, 0)::int as "delay_minutes",
100
+ case when departure_boards_detailed."trip.last_position.delay" is null then false else true end as "is_delay_available",
101
+ departure_boards_detailed."run.origin_route_name",
102
+ departure_boards_detailed."run.run_number"
103
+ from (
104
+ select
105
+ ("departure_datetime"
106
+ + MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
107
+ - case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
108
+ then least (
109
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
110
+ ("departure_datetime" - "arrival_datetime")::interval
111
+ )
112
+ else MAKE_INTERVAL()
113
+ end
114
+ ) "computed.departure_datetime_real",
115
+ "arrival_datetime" + MAKE_INTERVAL(secs => (
116
+ CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
117
+ )) "computed.arrival_datetime_real",
118
+ "ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
119
+ "ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
120
+ "ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
121
+ "ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
122
+ "ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
123
+ "ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
124
+ "ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
125
+ "ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
126
+ "ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
127
+ "ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
128
+ "ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
129
+ "ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
130
+ "ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
131
+ "ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
132
+ "ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
133
+ "ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
134
+ "ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
135
+ "ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
136
+ "ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
137
+ "ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
138
+ "ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
139
+ "ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
140
+ "ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
141
+ "ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
142
+ "ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
143
+ "ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
144
+ "ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
145
+ "ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
146
+ "ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
147
+ "ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
148
+ x.*,
149
+ cis_stop.cis_stop_platform_code as "cis_stop_platform_code",
150
+ right(run.route_id, -1) as "run.origin_route_name",
151
+ run.run_number as "run.run_number"
152
+ from
153
+ "ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
154
+ left join "ropidgtfs_run_numbers" as run on
155
+ "ropidgtfs_precomputed_departures"."trip_id" = run.trip_id
156
+ and "ropidgtfs_precomputed_departures"."service_id" = run.service_id
157
+ left outer join v_vehiclepositions_trip_position_vehicle_info as x on
158
+ "ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
159
+ left join vehiclepositions_cis_stops as cis_stop on
160
+ cis_stop.rt_trip_id = x."trip.id"
161
+ and cis_stop.cis_stop_group_id = "ropidgtfs_precomputed_departures"."cis_stop_group_id"
162
+ ) departure_boards_detailed
163
+ where
164
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
165
+ and (
166
+ (
167
+ (
168
+ (mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
169
+ or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
170
+ )
171
+ and
172
+ (
173
+ 0 = isNegativeMinutesBefore
174
+ or ( -- pro záporné minutes before
175
+ departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
176
+ or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
177
+ )
178
+ )
179
+
180
+ )
181
+ or (
182
+ departure_boards_detailed."trip.is_canceled" = true
183
+ and
184
+ (
185
+ (mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
186
+ or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
187
+ )
188
+ )
189
+ ) and
190
+ (
191
+ (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
192
+ 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
193
+ or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
194
+ );
195
+ $$;
@@ -0,0 +1,12 @@
1
+ DROP FUNCTION get_service_ids_from_ropidgtfs_calendar(varchar, date);
2
+
3
+ DROP FUNCTION normalize_departure_time(varchar);
4
+
5
+ DROP FUNCTION get_stop_id_from_cis(int4, varchar, varchar);
6
+
7
+ DROP FUNCTION is_within_12_hours(date, text, timestamptz);
8
+
9
+ DROP FUNCTION match_trip_id(text, int4);
10
+
11
+ DROP FUNCTION get_wanted_trip(varchar);
12
+
@@ -0,0 +1,139 @@
1
+ CREATE OR REPLACE FUNCTION get_service_ids_from_ropidgtfs_calendar(day_name character varying, start_date_ymd date)
2
+ RETURNS TABLE(
3
+ service_id character varying)
4
+ LANGUAGE plpgsql
5
+ AS $function$
6
+ BEGIN
7
+ RETURN QUERY EXECUTE FORMAT('SELECT
8
+ service_id
9
+ FROM
10
+ ropidgtfs_calendar
11
+ WHERE
12
+ %I = 1
13
+ AND to_date(start_date, ''YYYYMMDD'') <= $1
14
+ AND to_date(end_date, ''YYYYMMDD'') >= $1
15
+ UNION
16
+ SELECT
17
+ service_id
18
+ FROM
19
+ ropidgtfs_calendar_dates
20
+ WHERE
21
+ exception_type = 1
22
+ AND to_date(date, ''YYYYMMDD'') = $1
23
+ EXCEPT
24
+ SELECT
25
+ service_id
26
+ FROM
27
+ ropidgtfs_calendar_dates
28
+ WHERE
29
+ exception_type = 2
30
+ AND to_date(date, ''YYYYMMDD'') = $1', day_name)
31
+ USING start_date_YMD;
32
+ END;
33
+ $function$;
34
+
35
+ COMMENT ON FUNCTION get_service_ids_from_ropidgtfs_calendar(varchar, date) IS 'Returns service_id values from ropidgtfs_calendar and ropidgtfs_calendar_dates for a specified day and date, accounting for exceptions.';
36
+
37
+ CREATE OR REPLACE FUNCTION normalize_departure_time(departure_time varchar(255))
38
+ RETURNS character varying
39
+ LANGUAGE plpgsql
40
+ AS $function$
41
+ BEGIN
42
+ RETURN CONCAT(mod(SUBSTRING(LPAD(departure_time, 8, '0'), 1, 2)::int, 24), SUBSTRING(LPAD(departure_time, 8, '0'), 3, 6));
43
+ END;
44
+ $function$;
45
+
46
+ COMMENT ON FUNCTION normalize_departure_time(varchar) IS 'Normalizes a departure_time string to a 24-hour format by wrapping the hour component (mod 24), ensuring the time remains valid, and preserves the minutes and seconds.';
47
+
48
+ CREATE OR REPLACE FUNCTION get_stop_id_from_cis(startcisstopid integer, startaswstopid character varying, startcisstopplatformcode character varying)
49
+ RETURNS varchar
50
+ LANGUAGE plpgsql
51
+ IMMUTABLE
52
+ AS $function$
53
+ DECLARE
54
+ result varchar;
55
+ BEGIN
56
+ SELECT
57
+ stop_id INTO result
58
+ FROM
59
+ ropidgtfs_stops
60
+ WHERE
61
+ stop_id LIKE (
62
+ SELECT
63
+ CONCAT('U', CAST(node AS text), 'Z%')
64
+ FROM
65
+ ropidgtfs_cis_stop_groups
66
+ WHERE
67
+ cis IN (
68
+ SELECT
69
+ cis
70
+ FROM
71
+ ropidgtfs_cis_stops
72
+ WHERE
73
+ cis = startCisStopId
74
+ OR id = startAswStopId))
75
+ AND (platform_code LIKE startCisStopPlatformCode
76
+ OR (LENGTH(platform_code) < 2
77
+ AND platform_code LIKE CAST((ASCII(startCisStopPlatformCode) - 64) AS char)));
78
+ RETURN result;
79
+ END;
80
+ $function$;
81
+
82
+ COMMENT ON FUNCTION get_stop_id_from_cis(integer, varchar, varchar) IS 'Fetches a stop_id from ropidgtfs_stops using CIS stop ID, ASW stop ID, and platform code, matching stop groups and filtering by platform code or alternatives.';
83
+
84
+ CREATE OR REPLACE FUNCTION is_within_12_hours(trip_date date, min_stop_time text, trip_start_timestamp timestamp with time zone)
85
+ RETURNS boolean
86
+ LANGUAGE plpgsql
87
+ AS $function$
88
+ BEGIN
89
+ RETURN abs(extract(epoch FROM((trip_date::timestamp AT TIME ZONE 'Europe/Prague' + min_stop_time::interval) - trip_start_timestamp))) < 43200;
90
+ END;
91
+ $function$;
92
+
93
+ COMMENT ON FUNCTION is_within_12_hours(date, text, timestamp with time zone) IS 'Checks if the difference between a trip''s start timestamp and the computed stop time(trip_date + min_stop_time) is less than 12 hours (43200 seconds).';
94
+
95
+ CREATE OR REPLACE FUNCTION match_trip_id(trip_id text, cis_trip_number integer)
96
+ RETURNS boolean
97
+ LANGUAGE plpgsql
98
+ AS $function$
99
+ BEGIN
100
+ RETURN trip_id ~ CONCAT('\d+_', cis_trip_number, '_\d+');
101
+ END;
102
+ $function$;
103
+
104
+ COMMENT ON FUNCTION match_trip_id(text, integer) IS 'Checks if the trip_id matches the pattern of "<digits>_<cis_trip_number>_<digits>"';
105
+
106
+ CREATE OR REPLACE FUNCTION get_wanted_trip(trip_id character varying)
107
+ RETURNS TABLE(
108
+ cis_line_short_name character varying,
109
+ cis_trip_number integer,
110
+ start_cis_stop_id integer,
111
+ start_asw_stop_id character varying,
112
+ start_timestamp timestamp with time zone,
113
+ start_date date,
114
+ start_date_name varchar,
115
+ start_date_day_before date,
116
+ start_date_day_before_name varchar)
117
+ LANGUAGE plpgsql
118
+ AS $function$
119
+ BEGIN
120
+ RETURN QUERY
121
+ SELECT
122
+ vt.cis_line_short_name,
123
+ vt.cis_trip_number,
124
+ vt.start_cis_stop_id,
125
+ vt.start_asw_stop_id,
126
+ vt.start_timestamp,
127
+ DATE_TRUNC('day', vt.start_timestamp)::date AS start_date,
128
+ to_char(vt.start_timestamp, 'FMday')::varchar AS start_date_name,
129
+ (DATE_TRUNC('day', vt.start_timestamp) - INTERVAL '1 day')::date AS start_date_day_before,
130
+ to_char(vt.start_timestamp - INTERVAL '1 day', 'FMday')::varchar AS start_date_day_before_name
131
+ FROM
132
+ vehiclepositions_trips vt
133
+ WHERE
134
+ id = trip_id
135
+ LIMIT 1;
136
+ END;
137
+ $function$;
138
+
139
+ COMMENT ON FUNCTION get_wanted_trip(varchar) IS 'Retrieves detailed information about a trip from the vehiclepositions_trips table based on the given trip_id, including the start date and the previous day''s details.'
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RunTripsRedisRepository = void 0;
4
+ const const_1 = require("../../../../schema-definitions/ropid-gtfs/redis/const");
4
5
  const GtfsRunTripCacheDtoSchema_1 = require("../../../../schema-definitions/vehicle-positions/redis/schemas/GtfsRunTripCacheDtoSchema");
5
6
  const RedisModel_1 = require("@golemio/core/dist/integration-engine/models/RedisModel");
6
7
  const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
@@ -15,5 +16,5 @@ class RunTripsRedisRepository extends RedisModel_1.RedisModel {
15
16
  }
16
17
  }
17
18
  exports.RunTripsRedisRepository = RunTripsRedisRepository;
18
- RunTripsRedisRepository.NAMESPACE_PREFIX = "gtfsRunSchedule";
19
+ RunTripsRedisRepository.NAMESPACE_PREFIX = const_1.GTFS_RUN_SCHEDULE_NAMESPACE_PREFIX;
19
20
  //# sourceMappingURL=RunTripsRedisRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RunTripsRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/RunTripsRedisRepository.ts"],"names":[],"mappings":";;;AAAA,wIAA2G;AAC3G,wFAAqF;AACrF,mFAAkF;AAElF,MAAa,uBAAwB,SAAQ,uBAAU;IAGnD;QACI,KAAK,CACD,6BAA6B,EAC7B;YACI,kBAAkB,EAAE,IAAI,CAAC,KAAK;YAC9B,oBAAoB,EAAE,IAAI,CAAC,SAAS;YACpC,wBAAwB,EAAE,KAAK;YAC/B,MAAM,EAAE,uBAAuB,CAAC,gBAAgB;SACnD,EACD,IAAI,uCAAmB,CAAC,sCAAsC,EAAE,qDAAyB,CAAC,CAC7F,CAAC;IACN,CAAC;;AAdL,0DAeC;AAdiB,wCAAgB,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"RunTripsRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/RunTripsRedisRepository.ts"],"names":[],"mappings":";;;AAAA,iFAAiF;AACjF,wIAA2G;AAC3G,wFAAqF;AACrF,mFAAkF;AAElF,MAAa,uBAAwB,SAAQ,uBAAU;IAGnD;QACI,KAAK,CACD,6BAA6B,EAC7B;YACI,kBAAkB,EAAE,IAAI,CAAC,KAAK;YAC9B,oBAAoB,EAAE,IAAI,CAAC,SAAS;YACpC,wBAAwB,EAAE,KAAK;YAC/B,MAAM,EAAE,uBAAuB,CAAC,gBAAgB;SACnD,EACD,IAAI,uCAAmB,CAAC,sCAAsC,EAAE,qDAAyB,CAAC,CAC7F,CAAC;IACN,CAAC;;AAdL,0DAeC;AAdiB,wCAAgB,GAAG,0CAAkC,CAAC"}