@golemio/pid 3.5.2 → 3.5.3-dev.1636796644
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/migrations/postgresql/20250103092631-skip-missing.js +53 -0
- package/db/migrations/postgresql/20250109122504-braking-down-mapping-queries.js +53 -0
- package/db/migrations/postgresql/sqls/20250103092631-skip-missing-down.sql +184 -0
- package/db/migrations/postgresql/sqls/20250103092631-skip-missing-up.sql +195 -0
- package/db/migrations/postgresql/sqls/20250109122504-braking-down-mapping-queries-down.sql +12 -0
- package/db/migrations/postgresql/sqls/20250109122504-braking-down-mapping-queries-up.sql +139 -0
- package/dist/integration-engine/ropid-gtfs/data-access/cache/RunTripsRedisRepository.js +2 -1
- package/dist/integration-engine/ropid-gtfs/data-access/cache/RunTripsRedisRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +6 -5
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/RawQueryProvider.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/RawQueryProvider.js +101 -165
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/RawQueryProvider.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
- package/dist/output-gateway/pid/controllers/v2/V2DepartureBoardsController.js +1 -3
- package/dist/output-gateway/pid/controllers/v2/V2DepartureBoardsController.js.map +1 -1
- package/dist/output-gateway/pid/domain/DepartureInterfaces.d.ts +7 -0
- package/dist/output-gateway/pid/domain/DepartureInterfaces.js +3 -0
- package/dist/output-gateway/pid/domain/DepartureInterfaces.js.map +1 -0
- package/dist/output-gateway/pid/index.d.ts +4 -5
- package/dist/output-gateway/pid/index.js +1 -0
- package/dist/output-gateway/pid/index.js.map +1 -1
- package/dist/output-gateway/pid/ioc/Di.js +4 -0
- package/dist/output-gateway/pid/ioc/Di.js.map +1 -1
- package/dist/output-gateway/pid/ioc/OgPidToken.d.ts +2 -0
- package/dist/output-gateway/pid/ioc/OgPidToken.js +2 -0
- package/dist/output-gateway/pid/ioc/OgPidToken.js.map +1 -1
- package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.d.ts +14 -28
- package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js +192 -72
- package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js.map +1 -1
- package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js +26 -15
- package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js.map +1 -1
- package/dist/output-gateway/pid/models/helpers/SkipHelper.d.ts +11 -0
- package/dist/output-gateway/pid/models/helpers/SkipHelper.js +91 -0
- package/dist/output-gateway/pid/models/helpers/SkipHelper.js.map +1 -1
- package/dist/output-gateway/pid/models/helpers/const.d.ts +4 -0
- package/dist/output-gateway/pid/models/helpers/const.js +8 -0
- package/dist/output-gateway/pid/models/helpers/const.js.map +1 -0
- package/dist/output-gateway/pid/models/helpers/interfaces/IPIDDepartureQueryOptions.d.ts +3 -0
- package/dist/output-gateway/pid/models/interfaces/IGetDeparturesOptions.d.ts +21 -0
- package/dist/output-gateway/pid/models/interfaces/IGetDeparturesOptions.js +3 -0
- package/dist/output-gateway/pid/models/interfaces/IGetDeparturesOptions.js.map +1 -0
- package/dist/output-gateway/pid/service/facade/TransferFacade.js +2 -0
- package/dist/output-gateway/pid/service/facade/TransferFacade.js.map +1 -1
- package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.d.ts +4 -2
- package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.js +90 -68
- package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.js.map +1 -1
- package/dist/output-gateway/public/domain/repository/IVehiclePositionsRepository.d.ts +2 -1
- package/dist/output-gateway/ropid-gtfs/data-access/redis/RunTripsRedisRepository.d.ts +10 -0
- package/dist/output-gateway/ropid-gtfs/data-access/redis/RunTripsRedisRepository.js +65 -0
- package/dist/output-gateway/ropid-gtfs/data-access/redis/RunTripsRedisRepository.js.map +1 -0
- package/dist/output-gateway/ropid-gtfs/domain/repository/IRunTripsRedisRepository.d.ts +4 -0
- package/dist/output-gateway/ropid-gtfs/domain/repository/IRunTripsRedisRepository.js +3 -0
- package/dist/output-gateway/ropid-gtfs/domain/repository/IRunTripsRedisRepository.js.map +1 -0
- package/dist/output-gateway/shared/constants/validations.js +1 -1
- package/dist/output-gateway/shared/constants/validations.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/redis/const.d.ts +1 -0
- package/dist/schema-definitions/ropid-gtfs/redis/const.js +2 -1
- package/dist/schema-definitions/ropid-gtfs/redis/const.js.map +1 -1
- package/docs/openapi-output.yaml +10 -2
- 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 =
|
|
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,
|
|
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"}
|