@golemio/pid 2.9.1 → 2.9.2-dev.1006277161
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/example/10_cancelledTrip_example.sql +1 -1
- package/db/migrations/postgresql/20230913112258-departure-boards-optimalization.js +53 -0
- package/db/migrations/postgresql/sqls/20230913112258-departure-boards-optimalization-down.sql +2 -0
- package/db/migrations/postgresql/sqls/20230913112258-departure-boards-optimalization-up.sql +253 -0
- package/dist/output-gateway/pid/data-access/DeparturesRepository.d.ts +4 -6
- package/dist/output-gateway/pid/data-access/DeparturesRepository.js +46 -216
- package/dist/output-gateway/pid/data-access/DeparturesRepository.js.map +1 -1
- package/dist/output-gateway/pid/index.d.ts +22 -59
- package/dist/output-gateway/pid/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,4 +2,4 @@ INSERT INTO vehiclepositions_trips (cis_line_id,cis_trip_number,run_number,cis_l
|
|
|
2
2
|
(NULL,NULL,20,NULL,concat(CURRENT_DATE,'T03:59:00Z')::timestamp with time zone,'L9','9','9_4832_220502',concat(CURRENT_DATE,'T07:39:00+02:00_9_4832_220502_9366'),concat(CURRENT_DATE,'T03:59:00Z')::timestamp with time zone,NULL,NULL,'07:39:00',concat(CURRENT_DATE,'T05:39:00Z')::timestamp,2,true,NULL,NULL,NULL,NULL,'DP PRAHA','9','DP PRAHA',9366,'Sídliště Řepy',NULL,0,NULL,811532745,TRUE,'2022-07-25T06:32:00.000Z',NULL);
|
|
3
3
|
|
|
4
4
|
INSERT INTO vehiclepositions_positions (id, created_at,delay,delay_stop_arrival,delay_stop_departure,next_stop_id,shape_dist_traveled,is_canceled,lat,lng,origin_time,origin_timestamp,tracking,trips_id,create_batch_id,created_by,update_batch_id,updated_at,updated_by,bearing,cis_last_stop_id,cis_last_stop_sequence,last_stop_id,last_stop_sequence,next_stop_sequence,speed,last_stop_arrival_time,last_stop_departure_time,next_stop_arrival_time,next_stop_departure_time,asw_last_stop_id,state_process,state_position,this_stop_id,this_stop_sequence,tcp_event,last_stop_headsign,last_stop_name,next_stop_name,this_stop_name,valid_to) VALUES
|
|
5
|
-
(811532745,concat(CURRENT_DATE,'T03:59:00Z')::timestamp with time zone,0,NULL,NULL,'U694Z1P',0,TRUE,50.06769,14.33621,'06:38:55','2022-07-25T04:38:55.000Z',0,concat(CURRENT_DATE,'T07:39:00+02:00_9_4832_220502_9366'),NULL,NULL,NULL,concat(CURRENT_DATE,'T03:59:00Z')::timestamp with time zone,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,'2022-07-25T05:39:00.000Z','2022-07-25T05:39:00.000Z','06940002','processed','canceled','03940001',NULL,'P',NULL,NULL,NULL,NULL,
|
|
5
|
+
(811532745,concat(CURRENT_DATE,'T03:59:00Z')::timestamp with time zone,0,NULL,NULL,'U694Z1P',0,TRUE,50.06769,14.33621,'06:38:55','2022-07-25T04:38:55.000Z',0,concat(CURRENT_DATE,'T07:39:00+02:00_9_4832_220502_9366'),NULL,NULL,NULL,concat(CURRENT_DATE,'T03:59:00Z')::timestamp with time zone,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,'2022-07-25T05:39:00.000Z','2022-07-25T05:39:00.000Z','06940002','processed','canceled','03940001',NULL,'P',NULL,NULL,NULL,NULL,NULL);
|
|
@@ -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', '20230913112258-departure-boards-optimalization-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', '20230913112258-departure-boards-optimalization-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,253 @@
|
|
|
1
|
+
create view v_vehiclepositions_trip_position_vehicle_info as
|
|
2
|
+
select
|
|
3
|
+
"trip->last_position"."delay" as "delay_seconds",
|
|
4
|
+
"trip"."wheelchair_accessible" as "real_wheelchair_accessible",
|
|
5
|
+
"trip->last_position"."is_canceled" as "is_canceled",
|
|
6
|
+
"trip"."agency_name_real" as "trip.agency_name_real",
|
|
7
|
+
"trip"."agency_name_scheduled" as "trip.agency_name_scheduled",
|
|
8
|
+
"trip"."cis_line_id" as "trip.cis_line_id",
|
|
9
|
+
"trip"."cis_line_short_name" as "trip.cis_line_short_name",
|
|
10
|
+
"trip"."cis_trip_number" as "trip.cis_trip_number",
|
|
11
|
+
"trip"."gtfs_block_id" as "trip.gtfs_block_id",
|
|
12
|
+
"trip"."gtfs_route_id" as "trip.gtfs_route_id",
|
|
13
|
+
"trip"."gtfs_route_short_name" as "trip.gtfs_route_short_name",
|
|
14
|
+
"trip"."gtfs_route_type" as "trip.gtfs_route_type",
|
|
15
|
+
"trip"."gtfs_trip_headsign" as "trip.gtfs_trip_headsign",
|
|
16
|
+
"trip"."gtfs_trip_short_name" as "trip.gtfs_trip_short_name",
|
|
17
|
+
"trip"."gtfs_trip_id" as "trip.gtfs_trip_id",
|
|
18
|
+
"trip"."gtfs_date" as "trip.gtfs_date",
|
|
19
|
+
"trip"."id" as "trip.id",
|
|
20
|
+
"trip"."is_canceled" as "trip.is_canceled",
|
|
21
|
+
"trip"."last_position_id" as "trip.last_position_id",
|
|
22
|
+
"trip"."origin_route_name" as "trip.origin_route_name",
|
|
23
|
+
"trip"."run_number" as "trip.run_number",
|
|
24
|
+
"trip"."start_asw_stop_id" as "trip.start_asw_stop_id",
|
|
25
|
+
"trip"."start_cis_stop_id" as "trip.start_cis_stop_id",
|
|
26
|
+
"trip"."start_cis_stop_platform_code" as "trip.start_cis_stop_platform_code",
|
|
27
|
+
"trip"."start_time" as "trip.start_time",
|
|
28
|
+
"trip"."start_timestamp" as "trip.start_timestamp",
|
|
29
|
+
"trip"."end_timestamp" as "trip.end_timestamp",
|
|
30
|
+
"trip"."vehicle_registration_number" as "trip.vehicle_registration_number",
|
|
31
|
+
"trip"."vehicle_type_id" as "trip.vehicle_type_id",
|
|
32
|
+
"trip"."wheelchair_accessible" as "trip.wheelchair_accessible",
|
|
33
|
+
"trip"."internal_route_name" as "trip.internal_route_name",
|
|
34
|
+
"trip"."internal_run_number" as "trip.internal_run_number",
|
|
35
|
+
"trip->last_position"."asw_last_stop_id" as "trip.last_position.asw_last_stop_id",
|
|
36
|
+
"trip->last_position"."bearing" as "trip.last_position.bearing",
|
|
37
|
+
"trip->last_position"."cis_last_stop_id" as "trip.last_position.cis_last_stop_id",
|
|
38
|
+
"trip->last_position"."cis_last_stop_sequence" as "trip.last_position.cis_last_stop_sequence",
|
|
39
|
+
"trip->last_position"."delay" as "trip.last_position.delay",
|
|
40
|
+
"trip->last_position"."delay_stop_arrival" as "trip.last_position.delay_stop_arrival",
|
|
41
|
+
"trip->last_position"."delay_stop_departure" as "trip.last_position.delay_stop_departure",
|
|
42
|
+
"trip->last_position"."id" as "trip.last_position.id",
|
|
43
|
+
"trip->last_position"."is_canceled" as "trip.last_position.is_canceled",
|
|
44
|
+
"trip->last_position"."last_stop_arrival_time" as "trip.last_position.last_stop_arrival_time",
|
|
45
|
+
"trip->last_position"."last_stop_departure_time" as "trip.last_position.last_stop_departure_time",
|
|
46
|
+
"trip->last_position"."last_stop_id" as "trip.last_position.last_stop_id",
|
|
47
|
+
"trip->last_position"."last_stop_sequence" as "trip.last_position.last_stop_sequence",
|
|
48
|
+
"trip->last_position"."lat" as "trip.last_position.lat",
|
|
49
|
+
"trip->last_position"."lng" as "trip.last_position.lng",
|
|
50
|
+
"trip->last_position"."next_stop_arrival_time" as "trip.last_position.next_stop_arrival_time",
|
|
51
|
+
"trip->last_position"."next_stop_departure_time" as "trip.last_position.next_stop_departure_time",
|
|
52
|
+
"trip->last_position"."next_stop_id" as "trip.last_position.next_stop_id",
|
|
53
|
+
"trip->last_position"."next_stop_sequence" as "trip.last_position.next_stop_sequence",
|
|
54
|
+
"trip->last_position"."origin_time" as "trip.last_position.origin_time",
|
|
55
|
+
"trip->last_position"."origin_timestamp" as "trip.last_position.origin_timestamp",
|
|
56
|
+
"trip->last_position"."shape_dist_traveled" as "trip.last_position.shape_dist_traveled",
|
|
57
|
+
"trip->last_position"."speed" as "trip.last_position.speed",
|
|
58
|
+
"trip->last_position"."state_position" as "trip.last_position.state_position",
|
|
59
|
+
"trip->last_position"."state_process" as "trip.last_position.state_process",
|
|
60
|
+
"trip->last_position"."this_stop_id" as "trip.last_position.this_stop_id",
|
|
61
|
+
"trip->last_position"."this_stop_sequence" as "trip.last_position.this_stop_sequence",
|
|
62
|
+
"trip->last_position"."tracking" as "trip.last_position.tracking",
|
|
63
|
+
"trip->last_position"."trips_id" as "trip.last_position.trips_id",
|
|
64
|
+
"trip->last_position"."tcp_event" as "trip.last_position.tcp_event",
|
|
65
|
+
"trip->last_position"."last_stop_headsign" as "trip.last_position.last_stop_headsign",
|
|
66
|
+
"trip->last_position"."last_stop_name" as "trip.last_position.last_stop_name",
|
|
67
|
+
"trip->last_position"."valid_to" as "trip.last_position.valid_to",
|
|
68
|
+
"trip->last_position"."scheduled_timestamp" as "trip.last_position.scheduled_timestamp",
|
|
69
|
+
"trip->vehicle_descriptor"."id" as "trip.vehicle_descriptor.id",
|
|
70
|
+
"trip->vehicle_descriptor"."is_air_conditioned" as "trip.vehicle_descriptor.is_air_conditioned"
|
|
71
|
+
from
|
|
72
|
+
"vehiclepositions_trips" as "trip"
|
|
73
|
+
inner join "vehiclepositions_positions" as "trip->last_position" on
|
|
74
|
+
"trip"."last_position_id" = "trip->last_position"."id"
|
|
75
|
+
and ("trip->last_position"."valid_to" is null or "trip->last_position"."valid_to" >= current_timestamp)
|
|
76
|
+
and "trip->last_position"."state_position" in ('at_stop', 'before_track', 'before_track_delayed', 'canceled', 'off_track', 'on_track')
|
|
77
|
+
left outer join "vehiclepositions_vehicle_descriptors" as "trip->vehicle_descriptor" on
|
|
78
|
+
"trip"."vehicle_registration_number" = "trip->vehicle_descriptor"."registration_number"
|
|
79
|
+
and trip.gtfs_route_type = "trip->vehicle_descriptor".gtfs_route_type;
|
|
80
|
+
|
|
81
|
+
create function get_departures (
|
|
82
|
+
stopsIds varchar,
|
|
83
|
+
mode int,
|
|
84
|
+
dateDepartureBetweenStart timestamptz,
|
|
85
|
+
dateDepartureBetweenEnd timestamptz,
|
|
86
|
+
isNegativeMinutesBefore int,
|
|
87
|
+
dateCanceledDepartureBetweenStart timestamptz,
|
|
88
|
+
dateCanceledDepartureBetweenEnd timestamptz,
|
|
89
|
+
airconditioninfoenabled int
|
|
90
|
+
)
|
|
91
|
+
returns table (
|
|
92
|
+
departure_datetime_real timestamptz,
|
|
93
|
+
arrival_datetime_real timestamptz,
|
|
94
|
+
stop_sequence int2,
|
|
95
|
+
stop_headsign varchar(70),
|
|
96
|
+
arrival_datetime timestamptz,
|
|
97
|
+
departure_datetime timestamptz,
|
|
98
|
+
stop_id varchar(25),
|
|
99
|
+
platform_code varchar(10),
|
|
100
|
+
wheelchair_boarding int2,
|
|
101
|
+
min_stop_sequence int2,
|
|
102
|
+
max_stop_sequence int2,
|
|
103
|
+
trip_id varchar(50),
|
|
104
|
+
trip_headsign varchar(100),
|
|
105
|
+
trip_short_name varchar(30),
|
|
106
|
+
wheelchair_accessible int2,
|
|
107
|
+
route_short_name varchar(50),
|
|
108
|
+
route_type int2,
|
|
109
|
+
route_id varchar(20),
|
|
110
|
+
is_night bpchar(1),
|
|
111
|
+
is_regional bpchar(1),
|
|
112
|
+
is_substitute_transport bpchar(1),
|
|
113
|
+
next_stop_id varchar(30),
|
|
114
|
+
delay_seconds int4,
|
|
115
|
+
real_wheelchair_accessible bool,
|
|
116
|
+
is_canceled bool,
|
|
117
|
+
"trip.gtfs_trip_short_name" varchar(255),
|
|
118
|
+
"trip.gtfs_date" date,
|
|
119
|
+
"trip.internal_route_name" varchar(50),
|
|
120
|
+
"trip.internal_run_number" int4,
|
|
121
|
+
"trip.last_position.last_stop_id" varchar(255),
|
|
122
|
+
"trip.last_position.last_stop_sequence" int4,
|
|
123
|
+
"trip.last_position.last_stop_name" varchar(255),
|
|
124
|
+
"trip.last_position.this_stop_sequence" int4,
|
|
125
|
+
"trip.vehicle_descriptor.is_air_conditioned" bool,
|
|
126
|
+
delay_minutes int4,
|
|
127
|
+
is_delay_available bool
|
|
128
|
+
)
|
|
129
|
+
language SQL
|
|
130
|
+
set search_path from current
|
|
131
|
+
as $$
|
|
132
|
+
select
|
|
133
|
+
departure_boards_detailed."computed.departure_datetime_real",
|
|
134
|
+
departure_boards_detailed."computed.arrival_datetime_real",
|
|
135
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
|
|
136
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
|
|
137
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
|
|
138
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
|
|
139
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
|
|
140
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
|
|
141
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
142
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
143
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
144
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
|
|
145
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
|
|
146
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
|
|
147
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
148
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
|
|
149
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
|
|
150
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
|
|
151
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
|
|
152
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
|
|
153
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
154
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
|
|
155
|
+
departure_boards_detailed."delay_seconds",
|
|
156
|
+
departure_boards_detailed."real_wheelchair_accessible",
|
|
157
|
+
departure_boards_detailed."is_canceled",
|
|
158
|
+
departure_boards_detailed."trip.gtfs_trip_short_name",
|
|
159
|
+
departure_boards_detailed."trip.gtfs_date",
|
|
160
|
+
departure_boards_detailed."trip.internal_route_name",
|
|
161
|
+
departure_boards_detailed."trip.internal_run_number",
|
|
162
|
+
departure_boards_detailed."trip.last_position.last_stop_id",
|
|
163
|
+
departure_boards_detailed."trip.last_position.last_stop_sequence",
|
|
164
|
+
departure_boards_detailed."trip.last_position.last_stop_name",
|
|
165
|
+
departure_boards_detailed."trip.last_position.this_stop_sequence",
|
|
166
|
+
case when airconditioninfoenabled = 1 then departure_boards_detailed."trip.vehicle_descriptor.is_air_conditioned" else NULL end,
|
|
167
|
+
TRUNC(departure_boards_detailed."trip.last_position.delay"::DECIMAL / 60, 0)::int as "delay_minutes",
|
|
168
|
+
case when departure_boards_detailed."trip.last_position.delay" is null then false else true end as "is_delay_available"
|
|
169
|
+
from (
|
|
170
|
+
select
|
|
171
|
+
("departure_datetime"
|
|
172
|
+
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
|
|
173
|
+
- case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
|
|
174
|
+
then least (
|
|
175
|
+
MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
|
|
176
|
+
("departure_datetime" - "arrival_datetime")::interval
|
|
177
|
+
)
|
|
178
|
+
else MAKE_INTERVAL()
|
|
179
|
+
end
|
|
180
|
+
) "computed.departure_datetime_real",
|
|
181
|
+
"arrival_datetime" + MAKE_INTERVAL(secs => (
|
|
182
|
+
CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
|
|
183
|
+
)) "computed.arrival_datetime_real",
|
|
184
|
+
"ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
|
|
185
|
+
"ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
|
|
186
|
+
"ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
|
|
187
|
+
"ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
|
|
188
|
+
"ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
|
|
189
|
+
"ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
|
|
190
|
+
"ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
|
|
191
|
+
"ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
|
|
192
|
+
"ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
|
|
193
|
+
"ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
|
|
194
|
+
"ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
|
|
195
|
+
"ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
196
|
+
"ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
197
|
+
"ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
198
|
+
"ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
|
|
199
|
+
"ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
|
|
200
|
+
"ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
|
|
201
|
+
"ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
202
|
+
"ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
|
|
203
|
+
"ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
|
|
204
|
+
"ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
|
|
205
|
+
"ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
|
|
206
|
+
"ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
|
|
207
|
+
"ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
|
|
208
|
+
"ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
|
|
209
|
+
"ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
210
|
+
"ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
|
|
211
|
+
"ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
|
|
212
|
+
"ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
|
|
213
|
+
"ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
|
|
214
|
+
x.*
|
|
215
|
+
from
|
|
216
|
+
"ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
|
|
217
|
+
left outer join v_vehiclepositions_trip_position_vehicle_info as x on
|
|
218
|
+
"ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
|
|
219
|
+
and (x."trip.gtfs_date" = ropidgtfs_precomputed_departures.date)
|
|
220
|
+
) departure_boards_detailed
|
|
221
|
+
where
|
|
222
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
|
|
223
|
+
and (
|
|
224
|
+
(
|
|
225
|
+
(
|
|
226
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
227
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
228
|
+
)
|
|
229
|
+
and
|
|
230
|
+
(
|
|
231
|
+
0 = isNegativeMinutesBefore
|
|
232
|
+
or ( -- pro záporné minutes before
|
|
233
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
|
|
234
|
+
or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
|
|
235
|
+
)
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
)
|
|
239
|
+
or (
|
|
240
|
+
departure_boards_detailed."trip.is_canceled" = true
|
|
241
|
+
and
|
|
242
|
+
(
|
|
243
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
244
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
245
|
+
)
|
|
246
|
+
)
|
|
247
|
+
) and
|
|
248
|
+
(
|
|
249
|
+
(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
|
|
250
|
+
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
|
|
251
|
+
or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
|
|
252
|
+
);
|
|
253
|
+
$$;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SequelizeModel } from "@golemio/core/dist/output-gateway";
|
|
2
1
|
import { Moment } from "@golemio/core/dist/shared/moment-timezone";
|
|
3
2
|
import { DepartureMode, IPIDDeparture } from "..";
|
|
4
3
|
export interface IDeparturesViewOptions {
|
|
@@ -10,10 +9,10 @@ export interface IDeparturesViewOptions {
|
|
|
10
9
|
mode: DepartureMode;
|
|
11
10
|
isAirCondition: boolean;
|
|
12
11
|
}
|
|
13
|
-
export declare class DeparturesRepository
|
|
14
|
-
private
|
|
15
|
-
private
|
|
16
|
-
private
|
|
12
|
+
export declare class DeparturesRepository {
|
|
13
|
+
private schema;
|
|
14
|
+
private connector;
|
|
15
|
+
private log;
|
|
17
16
|
constructor();
|
|
18
17
|
GetOne(id: any): Promise<any>;
|
|
19
18
|
/** Retrieves all departures
|
|
@@ -22,5 +21,4 @@ export declare class DeparturesRepository extends SequelizeModel {
|
|
|
22
21
|
* @returns {Promise<IPIDDeparture[]>} Array of the retrieved records
|
|
23
22
|
*/
|
|
24
23
|
GetAll(options: IDeparturesViewOptions): Promise<IPIDDeparture[]>;
|
|
25
|
-
private composeIncludeForTrip;
|
|
26
24
|
}
|
|
@@ -14,47 +14,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.DeparturesRepository = void 0;
|
|
16
16
|
const FeatureFlagEnum_1 = require("../../shared/data-access/FeatureFlagEnum");
|
|
17
|
-
const PositionRepository_1 = require("../../vehicle-positions/data-access/PositionRepository");
|
|
18
|
-
const TripRepository_1 = require("../../vehicle-positions/data-access/TripRepository");
|
|
19
|
-
const VehicleDescriptorRepository_1 = require("../../vehicle-positions/data-access/VehicleDescriptorRepository");
|
|
20
17
|
const const_1 = require("../../../schema-definitions/const");
|
|
21
|
-
const precomputed_1 = require("../../../schema-definitions/ropid-gtfs/models/precomputed");
|
|
22
|
-
const output_gateway_1 = require("@golemio/core/dist/output-gateway");
|
|
23
18
|
const data_access_1 = require("@golemio/core/dist/output-gateway/data-access");
|
|
24
|
-
const sequelize_1 =
|
|
19
|
+
const sequelize_1 = require("@golemio/core/dist/shared/sequelize");
|
|
25
20
|
const moment_1 = __importDefault(require("moment"));
|
|
26
|
-
const const_2 = require("../../../const");
|
|
27
21
|
const __1 = require("..");
|
|
28
|
-
|
|
22
|
+
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
23
|
+
const output_gateway_1 = require("@golemio/core/dist/output-gateway");
|
|
24
|
+
const Di_1 = require("@golemio/core/dist/output-gateway/ioc/Di");
|
|
25
|
+
class DeparturesRepository {
|
|
29
26
|
constructor() {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
this.sequelizeModel.removeAttribute("id");
|
|
34
|
-
this.tripRepository = new TripRepository_1.TripRepository();
|
|
35
|
-
this.positionRepository = new PositionRepository_1.PositionRepository();
|
|
36
|
-
this.vehicleDescriptorRepository = new VehicleDescriptorRepository_1.VehicleDescriptorRepository();
|
|
37
|
-
this.sequelizeModel.hasOne(this.tripRepository.sequelizeModel, {
|
|
38
|
-
foreignKey: "gtfs_trip_id",
|
|
39
|
-
sourceKey: "trip_id",
|
|
40
|
-
scope: {
|
|
41
|
-
[sequelize_1.default.Op.and]: [sequelize_1.default.literal(`trip.gtfs_date = ${precomputed_1.DeparturesModel.TABLE_NAME}.date`)],
|
|
42
|
-
},
|
|
43
|
-
as: "trip",
|
|
44
|
-
});
|
|
45
|
-
this.tripRepository.sequelizeModel.hasOne(this.positionRepository.sequelizeModel, {
|
|
46
|
-
foreignKey: "id",
|
|
47
|
-
sourceKey: "last_position_id",
|
|
48
|
-
as: "last_position",
|
|
49
|
-
});
|
|
50
|
-
this.tripRepository.sequelizeModel.hasOne(this.vehicleDescriptorRepository.sequelizeModel, {
|
|
51
|
-
as: "vehicle_descriptor",
|
|
52
|
-
foreignKey: "registration_number",
|
|
53
|
-
sourceKey: "vehicle_registration_number",
|
|
54
|
-
scope: {
|
|
55
|
-
[sequelize_1.default.Op.and]: [sequelize_1.default.literal(`trip.gtfs_route_type = "trip->vehicle_descriptor".gtfs_route_type`)],
|
|
56
|
-
},
|
|
57
|
-
});
|
|
27
|
+
this.schema = const_1.PG_SCHEMA;
|
|
28
|
+
this.connector = Di_1.OutputGatewayContainer.resolve(CoreToken_1.CoreToken.PostgresConnector);
|
|
29
|
+
this.log = output_gateway_1.log;
|
|
58
30
|
}
|
|
59
31
|
GetOne(id) {
|
|
60
32
|
throw new Error("Method not implemented.");
|
|
@@ -67,190 +39,48 @@ class DeparturesRepository extends output_gateway_1.SequelizeModel {
|
|
|
67
39
|
GetAll(options) {
|
|
68
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
41
|
const isAirConditioningFeatureEnabled = (yield data_access_1.featureFlagService.isFeatureEnabled(FeatureFlagEnum_1.FeatureFlagEnum.PIDEnableAirConditioning, true)) && options.isAirCondition;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
case __1.DepartureMode.ARRIVALS:
|
|
108
|
-
conditionMode = {
|
|
109
|
-
[sequelize_1.default.Op.and]: [
|
|
110
|
-
{
|
|
111
|
-
drop_off_type: {
|
|
112
|
-
[sequelize_1.default.Op.ne]: "1",
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
stop_sequence: {
|
|
117
|
-
[sequelize_1.default.Op.ne]: sequelize_1.default.col("min_stop_sequence"),
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
],
|
|
121
|
-
};
|
|
122
|
-
break;
|
|
123
|
-
case __1.DepartureMode.MIXED:
|
|
124
|
-
conditionMode = {
|
|
125
|
-
pickup_type: {
|
|
126
|
-
[sequelize_1.default.Op.ne]: "1",
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
const conditionTripNotYetDepartured = {
|
|
132
|
-
[sequelize_1.default.Op.or]: [
|
|
133
|
-
{
|
|
134
|
-
stop_sequence: {
|
|
135
|
-
[sequelize_1.default.Op.gte]: sequelize_1.default.literal(`"trip->last_position"."last_stop_sequence"`),
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
sequelize_1.default.literal(`"trip->last_position"."last_stop_sequence" IS NULL`),
|
|
139
|
-
],
|
|
140
|
-
};
|
|
141
|
-
const conditionDepartureBetween = sequelize_1.default.where(sequelize_1.default.literal(options.mode === __1.DepartureMode.ARRIVALS ? arrivalDatetimeRealLiteral : departureDatetimeRealLiteral), {
|
|
142
|
-
[sequelize_1.default.Op.between]: [
|
|
143
|
-
options.currentMoment
|
|
144
|
-
.clone()
|
|
145
|
-
.add(options.minutesOffset - options.minutesBefore, "minutes")
|
|
146
|
-
.toDate(),
|
|
147
|
-
options.currentMoment
|
|
148
|
-
.clone()
|
|
149
|
-
.add(options.minutesOffset + options.minutesAfter, "minutes")
|
|
150
|
-
.toDate(),
|
|
151
|
-
],
|
|
152
|
-
});
|
|
153
|
-
const conditionCanceledTripDepartureSustain = {
|
|
154
|
-
[sequelize_1.default.Op.and]: [
|
|
155
|
-
sequelize_1.default.literal(`"trip"."is_canceled" = TRUE`),
|
|
156
|
-
sequelize_1.default.where(sequelize_1.default.literal(options.mode === __1.DepartureMode.ARRIVALS ? arrivalDatetimeRealLiteral : departureDatetimeRealLiteral), {
|
|
157
|
-
[sequelize_1.default.Op.between]: [
|
|
158
|
-
moment_1.default
|
|
159
|
-
.min([
|
|
160
|
-
options.currentMoment.clone().add(options.minutesOffset - options.minutesBefore, "minutes"),
|
|
161
|
-
options.currentMoment.clone().add(options.minutesOffset - 3, "minutes"),
|
|
162
|
-
])
|
|
163
|
-
.toDate(),
|
|
164
|
-
moment_1.default
|
|
165
|
-
.max(options.currentMoment.clone().add(options.minutesOffset + options.minutesAfter, "minutes"), options.currentMoment.clone().add(options.minutesOffset + 3, "minutes"))
|
|
166
|
-
.toDate(),
|
|
167
|
-
],
|
|
168
|
-
}),
|
|
169
|
-
],
|
|
170
|
-
};
|
|
171
|
-
const whereCondition = {
|
|
172
|
-
[sequelize_1.default.Op.and]: [
|
|
173
|
-
{
|
|
174
|
-
[sequelize_1.default.Op.or]: [
|
|
175
|
-
{
|
|
176
|
-
[sequelize_1.default.Op.and]: [
|
|
177
|
-
conditionDepartureBetween,
|
|
178
|
-
options.minutesBefore <= 0 && conditionTripNotYetDepartured,
|
|
179
|
-
],
|
|
180
|
-
},
|
|
181
|
-
conditionCanceledTripDepartureSustain,
|
|
182
|
-
],
|
|
183
|
-
},
|
|
184
|
-
conditionMode,
|
|
185
|
-
],
|
|
186
|
-
};
|
|
187
|
-
return this.sequelizeModel.findAll({
|
|
188
|
-
attributes: {
|
|
189
|
-
include: [
|
|
190
|
-
[sequelize_1.default.literal(`"trip->last_position"."delay"`), "delay_seconds"],
|
|
191
|
-
[sequelize_1.default.literal(`"trip"."wheelchair_accessible"`), "real_wheelchair_accessible"],
|
|
192
|
-
[sequelize_1.default.literal(`"trip->last_position"."is_canceled"`), "is_canceled"],
|
|
193
|
-
[sequelize_1.default.literal(arrivalDatetimeRealLiteral), "arrival_datetime_real"],
|
|
194
|
-
[sequelize_1.default.literal(departureDatetimeRealLiteral), "departure_datetime_real"],
|
|
195
|
-
[sequelize_1.default.literal(delayMinutesLiteral), "delay_minutes"],
|
|
196
|
-
[sequelize_1.default.literal(isDelayAvailableLiteral), "is_delay_available"],
|
|
197
|
-
],
|
|
198
|
-
},
|
|
199
|
-
where: {
|
|
200
|
-
[sequelize_1.default.Op.and]: [
|
|
201
|
-
{
|
|
202
|
-
stop_id: {
|
|
203
|
-
[sequelize_1.default.Op.in]: options.stopsIds,
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
whereCondition,
|
|
207
|
-
],
|
|
208
|
-
},
|
|
209
|
-
include: {
|
|
210
|
-
model: this.tripRepository.sequelizeModel,
|
|
211
|
-
as: "trip",
|
|
212
|
-
required: false,
|
|
213
|
-
include: this.composeIncludeForTrip(isAirConditioningFeatureEnabled),
|
|
42
|
+
const dateDepartureBetweenStart = options.currentMoment
|
|
43
|
+
.clone()
|
|
44
|
+
.add(options.minutesOffset - options.minutesBefore, "minutes")
|
|
45
|
+
.toDate();
|
|
46
|
+
const dateDepartureBetweenEnd = options.currentMoment
|
|
47
|
+
.clone()
|
|
48
|
+
.add(options.minutesOffset + options.minutesAfter, "minutes")
|
|
49
|
+
.toDate();
|
|
50
|
+
const dateCanceledDepartureBetweenStart = moment_1.default
|
|
51
|
+
.min([
|
|
52
|
+
options.currentMoment.clone().add(options.minutesOffset - options.minutesBefore, "minutes"),
|
|
53
|
+
options.currentMoment.clone().add(options.minutesOffset - 3, "minutes"),
|
|
54
|
+
])
|
|
55
|
+
.toDate();
|
|
56
|
+
const dateCanceledDepartureBetweenEnd = moment_1.default
|
|
57
|
+
.max(options.currentMoment.clone().add(options.minutesOffset + options.minutesAfter, "minutes"), options.currentMoment.clone().add(options.minutesOffset + 3, "minutes"))
|
|
58
|
+
.toDate();
|
|
59
|
+
const result = yield this.connector.getConnection().query(`
|
|
60
|
+
SELECT * from ${this.schema}.get_departures(
|
|
61
|
+
$stopsids,
|
|
62
|
+
$mode,
|
|
63
|
+
$datedeparturebetweenstart,
|
|
64
|
+
$datedeparturebetweenend,
|
|
65
|
+
$isnegativeminutesbefore,
|
|
66
|
+
$datecanceleddeparturebetweenstart,
|
|
67
|
+
$datecanceleddeparturebetweenend,
|
|
68
|
+
$airconditioninfoenabled);`, {
|
|
69
|
+
type: sequelize_1.QueryTypes.SELECT,
|
|
70
|
+
bind: {
|
|
71
|
+
stopsids: options.stopsIds.join(","),
|
|
72
|
+
mode: options.mode === __1.DepartureMode.ARRIVALS ? 2 : options.mode === __1.DepartureMode.MIXED ? 3 : 1,
|
|
73
|
+
datedeparturebetweenstart: dateDepartureBetweenStart,
|
|
74
|
+
datedeparturebetweenend: dateDepartureBetweenEnd,
|
|
75
|
+
isnegativeminutesbefore: options.minutesBefore < 0 ? 1 : 0,
|
|
76
|
+
datecanceleddeparturebetweenstart: dateCanceledDepartureBetweenStart,
|
|
77
|
+
datecanceleddeparturebetweenend: dateCanceledDepartureBetweenEnd,
|
|
78
|
+
airconditioninfoenabled: isAirConditioningFeatureEnabled ? 1 : 0,
|
|
214
79
|
},
|
|
215
|
-
raw: true,
|
|
216
80
|
});
|
|
81
|
+
return result;
|
|
217
82
|
});
|
|
218
83
|
}
|
|
219
|
-
composeIncludeForTrip(isAirConditioningFeatureEnabled) {
|
|
220
|
-
const include = [
|
|
221
|
-
{
|
|
222
|
-
as: "last_position",
|
|
223
|
-
model: this.positionRepository.sequelizeModel,
|
|
224
|
-
required: true,
|
|
225
|
-
where: {
|
|
226
|
-
valid_to: {
|
|
227
|
-
[sequelize_1.default.Op.or]: [null, { [sequelize_1.default.Op.gte]: new Date() }],
|
|
228
|
-
},
|
|
229
|
-
state_position: {
|
|
230
|
-
[sequelize_1.default.Op.in]: [
|
|
231
|
-
// StatePositionEnum.AFTER_TRACK, // excluding those vehicles after their trip
|
|
232
|
-
const_2.StatePositionEnum.AT_STOP,
|
|
233
|
-
const_2.StatePositionEnum.BEFORE_TRACK,
|
|
234
|
-
const_2.StatePositionEnum.BEFORE_TRACK_DELAYED,
|
|
235
|
-
const_2.StatePositionEnum.CANCELED,
|
|
236
|
-
// StatePositionEnum.INVISIBLE, // excluding information about trips to be hidden
|
|
237
|
-
const_2.StatePositionEnum.OFF_TRACK,
|
|
238
|
-
const_2.StatePositionEnum.ON_TRACK,
|
|
239
|
-
],
|
|
240
|
-
},
|
|
241
|
-
},
|
|
242
|
-
},
|
|
243
|
-
];
|
|
244
|
-
if (isAirConditioningFeatureEnabled) {
|
|
245
|
-
include.push({
|
|
246
|
-
as: "vehicle_descriptor",
|
|
247
|
-
model: this.vehicleDescriptorRepository.sequelizeModel,
|
|
248
|
-
attributes: ["is_air_conditioned"],
|
|
249
|
-
required: false,
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
return include;
|
|
253
|
-
}
|
|
254
84
|
}
|
|
255
85
|
exports.DeparturesRepository = DeparturesRepository;
|
|
256
86
|
//# sourceMappingURL=DeparturesRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/data-access/DeparturesRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8EAAyE;AACzE
|
|
1
|
+
{"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/data-access/DeparturesRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,78 +1,41 @@
|
|
|
1
|
+
import { GtfsStopWheelchairBoardingEnum, GtfsTripWheelchairAccessEnum } from "../../helpers/AccessibilityEnums";
|
|
1
2
|
import { GTFSRouteTypeEnum } from "../../helpers/RouteTypeEnums";
|
|
2
3
|
import { DeparturesDirectionsEnum } from "../../schema-definitions/ropid-departures-directions";
|
|
3
|
-
import { IDeparturesModel } from "../../schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel";
|
|
4
|
-
import { StatePositionEnum, StateProcessEnum } from "../../const";
|
|
5
4
|
export * from "./PIDRouter";
|
|
6
5
|
export * from "./models";
|
|
7
|
-
export interface IPIDDeparture
|
|
6
|
+
export interface IPIDDeparture {
|
|
7
|
+
stop_sequence: number;
|
|
8
|
+
stop_headsign: string | null;
|
|
9
|
+
arrival_datetime: Date | null;
|
|
10
|
+
departure_datetime: Date | null;
|
|
11
|
+
stop_id: string;
|
|
12
|
+
platform_code: string | null;
|
|
13
|
+
wheelchair_boarding: GtfsStopWheelchairBoardingEnum | null;
|
|
14
|
+
min_stop_sequence: number | null;
|
|
15
|
+
max_stop_sequence: number | null;
|
|
16
|
+
trip_id: string;
|
|
17
|
+
trip_headsign: string;
|
|
18
|
+
trip_short_name: string | null;
|
|
19
|
+
wheelchair_accessible: GtfsTripWheelchairAccessEnum | null;
|
|
20
|
+
route_short_name: string | null;
|
|
21
|
+
route_type: GTFSRouteTypeEnum;
|
|
22
|
+
route_id: string | null;
|
|
23
|
+
is_night: string | null;
|
|
24
|
+
is_regional: string | null;
|
|
25
|
+
is_substitute_transport: string | null;
|
|
26
|
+
next_stop_id: string | null;
|
|
8
27
|
direction: DeparturesDirectionsEnum | null;
|
|
9
28
|
delay_seconds: number | null;
|
|
10
29
|
delay_minutes: number | null;
|
|
11
30
|
is_delay_available: boolean;
|
|
12
31
|
arrival_datetime_real: Date | null;
|
|
13
32
|
departure_datetime_real: Date | null;
|
|
14
|
-
state_position: string;
|
|
15
33
|
real_wheelchair_accessible: boolean | null;
|
|
16
34
|
is_canceled: boolean;
|
|
17
|
-
"trip.agency_name_real": string | null;
|
|
18
|
-
"trip.agency_name_scheduled": string | null;
|
|
19
|
-
"trip.cis_line_id": string | null;
|
|
20
|
-
"trip.cis_line_short_name": string | null;
|
|
21
|
-
"trip.cis_trip_number": string | null;
|
|
22
|
-
"trip.gtfs_block_id": string | null;
|
|
23
|
-
"trip.gtfs_route_id": string | null;
|
|
24
|
-
"trip.gtfs_route_short_name": string | null;
|
|
25
|
-
"trip.gtfs_route_type": GTFSRouteTypeEnum | null;
|
|
26
|
-
"trip.gtfs_trip_headsign": string | null;
|
|
27
|
-
"trip.gtfs_trip_id": string | null;
|
|
28
|
-
"trip.id": string | null;
|
|
29
|
-
"trip.is_canceled": string | null;
|
|
30
|
-
"trip.last_position_id": string | null;
|
|
31
|
-
"trip.origin_route_name": string | null;
|
|
32
|
-
"trip.run_number": string | null;
|
|
33
|
-
"trip.start_asw_stop_id": string | null;
|
|
34
|
-
"trip.start_cis_stop_id": string | null;
|
|
35
|
-
"trip.start_cis_stop_platform_code": string | null;
|
|
36
|
-
"trip.start_time": string | null;
|
|
37
|
-
"trip.start_timestamp": string | null;
|
|
38
|
-
"trip.end_timestamp": string | null;
|
|
39
|
-
"trip.vehicle_registration_number": string | null;
|
|
40
|
-
"trip.vehicle_type_id": string | null;
|
|
41
|
-
"trip.wheelchair_accessible": string | null;
|
|
42
|
-
"trip.last_position.asw_last_stop_id": string | null;
|
|
43
|
-
"trip.last_position.bearing": number | null;
|
|
44
|
-
"trip.last_position.cis_last_stop_id": string | null;
|
|
45
|
-
"trip.last_position.cis_last_stop_sequence": number | null;
|
|
46
|
-
"trip.last_position.delay": number | null;
|
|
47
|
-
"trip.last_position.delay_stop_arrival": string | null;
|
|
48
|
-
"trip.last_position.delay_stop_departure": string | null;
|
|
49
|
-
"trip.last_position.id": string | null;
|
|
50
|
-
"trip.last_position.is_canceled": string | null;
|
|
51
|
-
"trip.last_position.last_stop_arrival_time": string | null;
|
|
52
|
-
"trip.last_position.last_stop_departure_time": string | null;
|
|
53
35
|
"trip.last_position.last_stop_id": string | null;
|
|
54
36
|
"trip.last_position.last_stop_sequence": number | null;
|
|
55
37
|
"trip.last_position.last_stop_name": string | null;
|
|
56
|
-
"trip.last_position.lat": string | null;
|
|
57
|
-
"trip.last_position.lng": string | null;
|
|
58
|
-
"trip.last_position.next_stop_arrival_time": string | null;
|
|
59
|
-
"trip.last_position.next_stop_departure_time": string | null;
|
|
60
|
-
"trip.last_position.next_stop_id": string | null;
|
|
61
|
-
"trip.last_position.next_stop_sequence": number | null;
|
|
62
|
-
"trip.last_position.next_stop_name": string | null;
|
|
63
|
-
"trip.last_position.origin_time": string | null;
|
|
64
|
-
"trip.last_position.origin_timestamp": string | null;
|
|
65
|
-
"trip.last_position.shape_dist_traveled": string | null;
|
|
66
|
-
"trip.last_position.speed": number | null;
|
|
67
|
-
"trip.last_position.state_position": StatePositionEnum | null;
|
|
68
|
-
"trip.last_position.state_process": StateProcessEnum | null;
|
|
69
|
-
"trip.last_position.this_stop_id": string | null;
|
|
70
38
|
"trip.last_position.this_stop_sequence": number | null;
|
|
71
|
-
"trip.last_position.this_stop_name": string | null;
|
|
72
|
-
"trip.last_position.tracking": number | null;
|
|
73
|
-
"trip.last_position.trips_id": string | null;
|
|
74
|
-
"trip.last_position.tcp_event": string | null;
|
|
75
|
-
"trip.last_position.last_stop_headsign": string | null;
|
|
76
39
|
"trip.vehicle_descriptor.is_air_conditioned"?: boolean | null;
|
|
77
40
|
}
|
|
78
41
|
export interface IPIDDepartureOutput {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output-gateway/pid/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output-gateway/pid/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAMA,8CAA4B;AAC5B,2CAAyB;AAiFzB,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,aAKX;AALD,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,sCAAqB,CAAA;IACrB,mCAAkB,CAAA;IAClB,8BAA8B;AAClC,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/pid",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.2-dev.1006277161",
|
|
4
4
|
"description": "Golemio PID Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -85,4 +85,4 @@
|
|
|
85
85
|
"html-entities": "^2.3.3",
|
|
86
86
|
"pg-copy-streams": "^5.1.1"
|
|
87
87
|
}
|
|
88
|
-
}
|
|
88
|
+
}
|