@golemio/pid 2.12.10-dev.1265906013 → 2.12.10-dev.1267493459
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/15_vehicle_descriptors.sql +3 -3
- package/db/example/redis/publicDepartureBoardsMock.json +13 -0
- package/db/example/redis/publicVehiclePositionsMock.json +24 -0
- package/db/migrations/postgresql/20240424122841-delay-at-past-stops-release-part-1.js +53 -0
- package/db/migrations/postgresql/sqls/20240424122841-delay-at-past-stops-release-part-1-down.sql +1 -0
- package/db/migrations/postgresql/sqls/20240424122841-delay-at-past-stops-release-part-1-up.sql +98 -0
- package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.d.ts +4 -3
- package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.js +8 -6
- package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.d.ts +14 -0
- package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js +82 -0
- package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.d.ts +10 -2
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js +81 -10
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/interfaces/IPublicDepartureDto.d.ts +12 -0
- package/dist/integration-engine/ropid-gtfs/interfaces/IPublicDepartureDto.js +3 -0
- package/dist/integration-engine/ropid-gtfs/interfaces/IPublicDepartureDto.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js +10 -0
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +4 -0
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +4 -0
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.d.ts +7 -0
- package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.js +36 -0
- package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.d.ts +2 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js +9 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/constants.d.ts +1 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/constants.js +5 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/constants.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js +4 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.d.ts +21 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.js +102 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPublicGtfsDepartureCacheTask.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.d.ts +3 -2
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.js +9 -7
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/interfaces/IRefreshPublicDepartureParams.d.ts +4 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/interfaces/IRefreshPublicDepartureParams.js +3 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/interfaces/IRefreshPublicDepartureParams.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/schema/RefreshPublicDepartureSchema.d.ts +5 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/schema/RefreshPublicDepartureSchema.js +31 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/schema/RefreshPublicDepartureSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/cache/PublicApiCacheRepository.js +6 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/cache/PublicApiCacheRepository.js.map +1 -1
- package/dist/output-gateway/index.js.map +1 -1
- package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js +2 -1
- package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js.map +1 -1
- package/dist/output-gateway/public/controllers/v1/PublicDepartureBoardsController.d.ts +8 -0
- package/dist/output-gateway/public/controllers/v1/PublicDepartureBoardsController.js +60 -0
- package/dist/output-gateway/public/controllers/v1/PublicDepartureBoardsController.js.map +1 -0
- package/dist/output-gateway/public/controllers/v1/interfaces/PublicParamsInterfaces.d.ts +10 -0
- package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.d.ts +11 -0
- package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.js +72 -0
- package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.js.map +1 -0
- package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.d.ts +1 -0
- package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.js +22 -2
- package/dist/output-gateway/public/data-access/redis/PublicVehiclePositionsRepository.js.map +1 -1
- package/dist/output-gateway/public/domain/IPublicDepartureTransformInputDto.d.ts +9 -0
- package/dist/output-gateway/public/domain/IPublicDepartureTransformInputDto.js +3 -0
- package/dist/output-gateway/public/domain/IPublicDepartureTransformInputDto.js.map +1 -0
- package/dist/output-gateway/public/domain/PublicApiDepartureInterfaces.d.ts +34 -0
- package/dist/output-gateway/public/domain/PublicApiDepartureInterfaces.js +3 -0
- package/dist/output-gateway/public/domain/PublicApiDepartureInterfaces.js.map +1 -0
- package/dist/output-gateway/public/domain/repository/IGtfsDepartureRepository.d.ts +4 -0
- package/dist/output-gateway/public/domain/repository/IGtfsDepartureRepository.js +3 -0
- package/dist/output-gateway/public/domain/repository/IGtfsDepartureRepository.js.map +1 -0
- package/dist/output-gateway/public/domain/repository/IVehiclePositionsRepository.d.ts +1 -0
- package/dist/output-gateway/public/ioc/Di.js +8 -0
- package/dist/output-gateway/public/ioc/Di.js.map +1 -1
- package/dist/output-gateway/public/ioc/OgModuleToken.d.ts +2 -0
- package/dist/output-gateway/public/ioc/OgModuleToken.js +2 -0
- package/dist/output-gateway/public/ioc/OgModuleToken.js.map +1 -1
- package/dist/output-gateway/public/routers/v1/PublicDeparturesRouter.d.ts +10 -0
- package/dist/output-gateway/public/routers/v1/PublicDeparturesRouter.js +28 -0
- package/dist/output-gateway/public/routers/v1/PublicDeparturesRouter.js.map +1 -0
- package/dist/output-gateway/public/routers/v1/{PublicRouter.d.ts → PublicVehiclePositionsRouter.d.ts} +3 -3
- package/dist/output-gateway/public/routers/v1/{PublicRouter.js → PublicVehiclePositionsRouter.js} +8 -8
- package/dist/output-gateway/public/routers/v1/PublicVehiclePositionsRouter.js.map +1 -0
- package/dist/output-gateway/public/routers/v1/helpers/CustomStopIdGroupValidator.d.ts +5 -0
- package/dist/output-gateway/public/routers/v1/helpers/CustomStopIdGroupValidator.js +42 -0
- package/dist/output-gateway/public/routers/v1/helpers/CustomStopIdGroupValidator.js.map +1 -0
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.d.ts +17 -0
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js +106 -0
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js.map +1 -0
- package/dist/output-gateway/public/service/transformations/PublicDepartureTransformation.d.ts +34 -0
- package/dist/output-gateway/public/service/transformations/PublicDepartureTransformation.js +54 -0
- package/dist/output-gateway/public/service/transformations/PublicDepartureTransformation.js.map +1 -0
- package/dist/output-gateway/shared/DepartureCalculator.d.ts +10 -0
- package/dist/output-gateway/shared/DepartureCalculator.js +26 -0
- package/dist/output-gateway/shared/DepartureCalculator.js.map +1 -0
- package/dist/output-gateway/shared/RopidRouterUtils.d.ts +2 -1
- package/dist/output-gateway/shared/RopidRouterUtils.js +4 -3
- package/dist/output-gateway/shared/RopidRouterUtils.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 +5 -0
- package/dist/schema-definitions/ropid-gtfs/redis/const.js.map +1 -0
- package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto.d.ts +12 -0
- package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto.js +3 -0
- package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto.js.map +1 -0
- package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.d.ts +4 -0
- package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.js +69 -0
- package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.js.map +1 -0
- package/docs/implementation_documentation.md +26 -0
- package/docs/openapi-output.yaml +233 -0
- package/package.json +1 -1
- package/dist/output-gateway/public/routers/v1/PublicRouter.js.map +0 -1
|
@@ -7,9 +7,9 @@ INSERT INTO vehiclepositions_vehicle_descriptors (id,state,registration_number,r
|
|
|
7
7
|
(15,'zar',9366,1,'8T0 XXXX','ARRIVA STŘEDNÍ ČECHY','SOR','C 10.5','autobus',3,false,false,'Veolia, červená s šedým pruhem',NULL,NULL,NULL,now(),NULL,NULL,now(),NULL),
|
|
8
8
|
(16,'zar',8582,2,'5SX XXXX','OAD Kolín','Iveco','Crossway LE LINE 12M','autobus',3,false,false,'schéma PID, šedá s červenými svislými pruhy',NULL,NULL,NULL,now(),NULL,NULL,now(),NULL),
|
|
9
9
|
(17,'zar',8581,2,'5SU XXXX','OAD Kolín','Iveco','Crossway LE LINE 12M','autobus',3,true,false,'schéma PID, šedá s červenými svislými pruhy',NULL,NULL,NULL,now(),NULL,NULL,now(),NULL),
|
|
10
|
-
(18,'zar',3927,2,'7AP 7543','Dopravní podnik hl. m. Prahy','SOR','NB 12','autobus',3,true,false,'městské schéma, červeno-bílá',null,null,NULL,now(),NULL,NULL,now(),NULL)
|
|
11
|
-
|
|
10
|
+
(18,'zar',3927,2,'7AP 7543','Dopravní podnik hl. m. Prahy','SOR','NB 12','autobus',3,true,false,'městské schéma, červeno-bílá',null,null,NULL,now(),NULL,NULL,now(),NULL),
|
|
11
|
+
(19,'zar',6837,3,'3AT 3607','Dopravní podnik hl. m. Prahy','SOR','NB 18','autobus',3,false,false,'městské schéma, červeno-bílá',null,null,NULL,now(),NULL,NULL,now(),NULL);
|
|
12
12
|
|
|
13
13
|
-- To be deleted by the test
|
|
14
14
|
INSERT INTO vehiclepositions_vehicle_descriptors (id,state,registration_number,registration_number_index,license_plate,"operator",manufacturer,"type",traction,gtfs_route_type,is_air_conditioned,has_usb_chargers,paint,thumbnail_url,photo_url,create_batch_id,created_at,created_by,update_batch_id,updated_at,updated_by) VALUES
|
|
15
|
-
(
|
|
15
|
+
(20,'zar',1094,1,'5AC XXXX','ČSAD Česká Lípa','Iveco','Crossway LINE 12M','autobus',3,true,false,'bílá',NULL,NULL,NULL,now() - interval '1 day',NULL,NULL,now() - interval '1 day',NULL);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"stop_id": "U476Z2P",
|
|
4
|
+
"departure_datetime": "2024-04-17T17:43:00+02:00",
|
|
5
|
+
"arrival_datetime": "2024-04-17T17:43:00+02:00",
|
|
6
|
+
"route_short_name": "135",
|
|
7
|
+
"route_type": 3,
|
|
8
|
+
"trip_id": "135_1001_240219",
|
|
9
|
+
"stop_sequence": 6,
|
|
10
|
+
"platform_code": "B",
|
|
11
|
+
"trip_headsign": "Chodov"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
@@ -46,5 +46,29 @@
|
|
|
46
46
|
"operator": "OAD KOLÍN (Nymburk)",
|
|
47
47
|
"vehicle_type_id": 4
|
|
48
48
|
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"gtfs_trip_id": "135_1001_240219",
|
|
52
|
+
"route_type": 3,
|
|
53
|
+
"gtfs_route_short_name": "135",
|
|
54
|
+
"lat": 50.07211,
|
|
55
|
+
"lng": 14.44531,
|
|
56
|
+
"bearing": 97,
|
|
57
|
+
"delay": 16,
|
|
58
|
+
"state_position": "on_track",
|
|
59
|
+
"vehicle_id": "service-3-6837",
|
|
60
|
+
"detailed_info": {
|
|
61
|
+
"is_wheelchair_accessible": true,
|
|
62
|
+
"origin_route_name": "135",
|
|
63
|
+
"shape_id": "L135V2",
|
|
64
|
+
"run_number": 10,
|
|
65
|
+
"trip_headsign": "Chodov",
|
|
66
|
+
"shape_dist_traveled": 3.248,
|
|
67
|
+
"last_stop_sequence": 7,
|
|
68
|
+
"origin_timestamp": "2024-04-17T17:34:59+02:00",
|
|
69
|
+
"registration_number": 6837,
|
|
70
|
+
"operator": "DP PRAHA",
|
|
71
|
+
"vehicle_type_id": 3
|
|
72
|
+
}
|
|
49
73
|
}
|
|
50
74
|
]
|
|
@@ -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', '20240424122841-delay-at-past-stops-release-part-1-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', '20240424122841-delay-at-past-stops-release-part-1-down.sql');
|
|
38
|
+
return new Promise( function( resolve, reject ) {
|
|
39
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
+
if (err) return reject(err);
|
|
41
|
+
console.log('received data: ' + data);
|
|
42
|
+
|
|
43
|
+
resolve(data);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.then(function(data) {
|
|
47
|
+
return db.runSql(data);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports._meta = {
|
|
52
|
+
"version": 1
|
|
53
|
+
};
|
package/db/migrations/postgresql/sqls/20240424122841-delay-at-past-stops-release-part-1-down.sql
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
drop view v_vehiclepositions_stop_time_delay_prediction;
|
package/db/migrations/postgresql/sqls/20240424122841-delay-at-past-stops-release-part-1-up.sql
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
create view v_vehiclepositions_stop_time_delay_prediction as with recursive stop_times as (
|
|
2
|
+
select
|
|
3
|
+
vt.id,
|
|
4
|
+
rst.trip_id,
|
|
5
|
+
vt.provider_source_type,
|
|
6
|
+
vp.delay,
|
|
7
|
+
coalesce(vp.last_stop_sequence, 1) as initial_stop_sequence,
|
|
8
|
+
vp.state_position,
|
|
9
|
+
rst.stop_sequence,
|
|
10
|
+
rst.stop_id,
|
|
11
|
+
rs.platform_code,
|
|
12
|
+
vcs.cis_stop_platform_code,
|
|
13
|
+
rst.computed_dwell_time_seconds,
|
|
14
|
+
case
|
|
15
|
+
when vp.last_stop_sequence is null then vp.delay
|
|
16
|
+
else vp.delay_stop_arrival
|
|
17
|
+
end as arrival_delay_seconds,
|
|
18
|
+
case
|
|
19
|
+
when vp.last_stop_sequence is null then predict_delay_seconds(
|
|
20
|
+
vp.delay,
|
|
21
|
+
rst.computed_dwell_time_seconds,
|
|
22
|
+
vt.provider_source_type
|
|
23
|
+
)
|
|
24
|
+
when vp.state_position = 'at_stop' then case
|
|
25
|
+
when vt.provider_source_type = '1' then greatest(0, vp.delay)
|
|
26
|
+
else vp.delay
|
|
27
|
+
end
|
|
28
|
+
else vp.delay_stop_departure
|
|
29
|
+
end as departure_delay_seconds
|
|
30
|
+
from
|
|
31
|
+
ropidgtfs_stop_times rst
|
|
32
|
+
inner join vehiclepositions_trips vt on vt.gtfs_trip_id = rst.trip_id
|
|
33
|
+
inner join vehiclepositions_positions vp on vp.id = vt.last_position_id
|
|
34
|
+
and (
|
|
35
|
+
vp.valid_to is null
|
|
36
|
+
or vp.valid_to >= now()
|
|
37
|
+
)
|
|
38
|
+
left join ropidgtfs_stops rs on rs.stop_id = rst.stop_id
|
|
39
|
+
left join ropidgtfs_cis_stops rcs on rcs.id = rs.computed_cis_stop_id
|
|
40
|
+
left join vehiclepositions_cis_stops vcs on vcs.rt_trip_id = vt.id
|
|
41
|
+
and vcs.cis_stop_group_id = rcs.cis
|
|
42
|
+
where
|
|
43
|
+
vt.gtfs_trip_id is not null
|
|
44
|
+
and rst.stop_sequence = coalesce(vp.last_stop_sequence, 1)
|
|
45
|
+
union
|
|
46
|
+
all
|
|
47
|
+
select
|
|
48
|
+
previous_row.id,
|
|
49
|
+
rst.trip_id,
|
|
50
|
+
previous_row.provider_source_type,
|
|
51
|
+
previous_row.delay,
|
|
52
|
+
previous_row.initial_stop_sequence,
|
|
53
|
+
previous_row.state_position,
|
|
54
|
+
rst.stop_sequence,
|
|
55
|
+
rst.stop_id,
|
|
56
|
+
rs.platform_code,
|
|
57
|
+
vcs.cis_stop_platform_code,
|
|
58
|
+
rst.computed_dwell_time_seconds,
|
|
59
|
+
case
|
|
60
|
+
when rst.stop_sequence - previous_row.initial_stop_sequence = 1
|
|
61
|
+
and previous_row.state_position != 'at_stop' then previous_row.delay
|
|
62
|
+
else previous_row.departure_delay_seconds
|
|
63
|
+
end as arrival_delay_seconds,
|
|
64
|
+
predict_delay_seconds(
|
|
65
|
+
case
|
|
66
|
+
when rst.stop_sequence - previous_row.initial_stop_sequence = 1
|
|
67
|
+
and previous_row.state_position != 'at_stop' then previous_row.delay
|
|
68
|
+
else previous_row.departure_delay_seconds
|
|
69
|
+
end,
|
|
70
|
+
rst.computed_dwell_time_seconds,
|
|
71
|
+
previous_row.provider_source_type
|
|
72
|
+
) as departure_delay_seconds
|
|
73
|
+
from
|
|
74
|
+
stop_times previous_row
|
|
75
|
+
inner join ropidgtfs_stop_times rst on rst.trip_id = previous_row.trip_id
|
|
76
|
+
and rst.stop_sequence = previous_row.stop_sequence + 1
|
|
77
|
+
left join ropidgtfs_stops rs on rs.stop_id = rst.stop_id
|
|
78
|
+
left join ropidgtfs_cis_stops rcs on rcs.id = rs.computed_cis_stop_id
|
|
79
|
+
left join vehiclepositions_cis_stops vcs on vcs.rt_trip_id = previous_row.id
|
|
80
|
+
and vcs.cis_stop_group_id = rcs.cis
|
|
81
|
+
)
|
|
82
|
+
select
|
|
83
|
+
trip_id,
|
|
84
|
+
stop_sequence,
|
|
85
|
+
stop_id,
|
|
86
|
+
platform_code,
|
|
87
|
+
cis_stop_platform_code,
|
|
88
|
+
arrival_delay_seconds,
|
|
89
|
+
departure_delay_seconds
|
|
90
|
+
from
|
|
91
|
+
stop_times
|
|
92
|
+
order by
|
|
93
|
+
trip_id,
|
|
94
|
+
stop_sequence;
|
|
95
|
+
|
|
96
|
+
comment on view v_vehiclepositions_stop_time_delay_prediction is '
|
|
97
|
+
This view contains the predicted delay of a vehicle at each stop.
|
|
98
|
+
';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { DeparturesRepository } from "./data-access/precomputed";
|
|
1
2
|
import { IDatabaseConnector } from "@golemio/core/dist/helpers/data-access/postgres/IDatabaseConnector";
|
|
2
3
|
import { Transaction } from "@golemio/core/dist/shared/sequelize";
|
|
3
|
-
import { RopidGtfsRepository } from "./data-access/RopidGtfsRepository";
|
|
4
4
|
import { RopidGtfsMetadataRepository } from "./RopidGtfsMetadataRepository";
|
|
5
|
+
import { RopidGtfsRepository } from "./data-access/RopidGtfsRepository";
|
|
5
6
|
export declare enum DatasetEnum {
|
|
6
7
|
PID_GTFS = "PID_GTFS",
|
|
7
8
|
CIS_STOPS = "CIS_STOPS",
|
|
@@ -12,14 +13,14 @@ export declare enum DatasetEnum {
|
|
|
12
13
|
export declare class RopidGtfsFacade {
|
|
13
14
|
private ropidGtfsRepository;
|
|
14
15
|
private ropidGtfsMetadataRepository;
|
|
16
|
+
private departureRepository;
|
|
15
17
|
private databaseConnector;
|
|
16
18
|
private name;
|
|
17
19
|
/** Precomputed data repositories */
|
|
18
|
-
private departuresRepository;
|
|
19
20
|
private minMaxStopSequencesRepository;
|
|
20
21
|
private tripScheduleRepository;
|
|
21
22
|
private servicesCalendarRepository;
|
|
22
|
-
constructor(ropidGtfsRepository: RopidGtfsRepository, ropidGtfsMetadataRepository: RopidGtfsMetadataRepository, databaseConnector: IDatabaseConnector);
|
|
23
|
+
constructor(ropidGtfsRepository: RopidGtfsRepository, ropidGtfsMetadataRepository: RopidGtfsMetadataRepository, departureRepository: DeparturesRepository, databaseConnector: IDatabaseConnector);
|
|
23
24
|
checkSavedTmpTables: (dataset: string, version: number) => Promise<void>;
|
|
24
25
|
replaceTables: (datasetInfo: Array<{
|
|
25
26
|
dataset: string;
|
|
@@ -34,11 +34,11 @@ const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
|
|
|
34
34
|
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
35
35
|
const sequelize_1 = __importDefault(require("@golemio/core/dist/shared/sequelize"));
|
|
36
36
|
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
37
|
+
const RopidGtfsMetadataRepository_1 = require("./RopidGtfsMetadataRepository");
|
|
37
38
|
const RopidGtfsRepository_1 = require("./data-access/RopidGtfsRepository");
|
|
38
39
|
const SourceTableSuffixEnum_1 = require("./helpers/SourceTableSuffixEnum");
|
|
39
40
|
const RopidGtfsContainerToken_1 = require("./ioc/RopidGtfsContainerToken");
|
|
40
41
|
const HelperTypes_1 = require("./workers/timetables/tasks/helpers/HelperTypes");
|
|
41
|
-
const RopidGtfsMetadataRepository_1 = require("./RopidGtfsMetadataRepository");
|
|
42
42
|
var DatasetEnum;
|
|
43
43
|
(function (DatasetEnum) {
|
|
44
44
|
DatasetEnum["PID_GTFS"] = "PID_GTFS";
|
|
@@ -48,9 +48,10 @@ var DatasetEnum;
|
|
|
48
48
|
DatasetEnum["DEPARTURES_PRESETS"] = "DEPARTURES_PRESETS";
|
|
49
49
|
})(DatasetEnum || (exports.DatasetEnum = DatasetEnum = {}));
|
|
50
50
|
let RopidGtfsFacade = exports.RopidGtfsFacade = class RopidGtfsFacade {
|
|
51
|
-
constructor(ropidGtfsRepository, ropidGtfsMetadataRepository, databaseConnector) {
|
|
51
|
+
constructor(ropidGtfsRepository, ropidGtfsMetadataRepository, departureRepository, databaseConnector) {
|
|
52
52
|
this.ropidGtfsRepository = ropidGtfsRepository;
|
|
53
53
|
this.ropidGtfsMetadataRepository = ropidGtfsMetadataRepository;
|
|
54
|
+
this.departureRepository = departureRepository;
|
|
54
55
|
this.databaseConnector = databaseConnector;
|
|
55
56
|
this.name = this.constructor.name;
|
|
56
57
|
this.checkSavedTmpTables = (dataset, version) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -133,9 +134,8 @@ let RopidGtfsFacade = exports.RopidGtfsFacade = class RopidGtfsFacade {
|
|
|
133
134
|
this.minMaxStopSequencesRepository["tableName"],
|
|
134
135
|
this.tripScheduleRepository["tableName"],
|
|
135
136
|
], t);
|
|
136
|
-
yield this.
|
|
137
|
+
yield this.departureRepository.replaceByTmp(t);
|
|
137
138
|
});
|
|
138
|
-
this.departuresRepository = new precomputed_1.DeparturesRepository();
|
|
139
139
|
this.minMaxStopSequencesRepository = new precomputed_1.MinMaxStopSequencesRepository();
|
|
140
140
|
this.tripScheduleRepository = new precomputed_1.TripScheduleRepository();
|
|
141
141
|
this.servicesCalendarRepository = new precomputed_1.ServicesCalendarRepository();
|
|
@@ -145,8 +145,10 @@ exports.RopidGtfsFacade = RopidGtfsFacade = __decorate([
|
|
|
145
145
|
(0, tsyringe_1.injectable)(),
|
|
146
146
|
__param(0, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGtfsRepository)),
|
|
147
147
|
__param(1, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGtfsMetadataRepository)),
|
|
148
|
-
__param(2, (0, tsyringe_1.inject)(
|
|
148
|
+
__param(2, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.DepartureRepository)),
|
|
149
|
+
__param(3, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.PostgresConnector)),
|
|
149
150
|
__metadata("design:paramtypes", [RopidGtfsRepository_1.RopidGtfsRepository,
|
|
150
|
-
RopidGtfsMetadataRepository_1.RopidGtfsMetadataRepository,
|
|
151
|
+
RopidGtfsMetadataRepository_1.RopidGtfsMetadataRepository,
|
|
152
|
+
precomputed_1.DeparturesRepository, Object])
|
|
151
153
|
], RopidGtfsFacade);
|
|
152
154
|
//# sourceMappingURL=RopidGtfsFacade.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RopidGtfsFacade.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGtfsFacade.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAKgD;AAChD,sCAAiF;AACjF,0DAAuC;AACvC,oEAA8D;AAG9D,wEAAqE;AACrE,2EAAoE;AACpE,6EAAwE;AACxE,oFAAoF;AACpF,iEAAwE;AAExE,2EAAwE;AACxE,2EAAwE;AACxE,2EAAwE;AACxE,gFAAuF;
|
|
1
|
+
{"version":3,"file":"RopidGtfsFacade.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGtfsFacade.ts"],"names":[],"mappings":"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"}
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IRefreshPublicDepartureParams } from "../../workers/timetables/tasks/interfaces/IRefreshPublicDepartureParams";
|
|
2
|
+
import { IPublicGtfsDepartureCacheDto } from "../../../../schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto";
|
|
3
|
+
import { RedisModel } from "@golemio/core/dist/integration-engine/models/RedisModel";
|
|
4
|
+
export declare class PublicGtfsDepartureRepository extends RedisModel {
|
|
5
|
+
static NAMESPACE_PREFIX: string;
|
|
6
|
+
constructor();
|
|
7
|
+
/**
|
|
8
|
+
* Save new departures for a stop and
|
|
9
|
+
* - remove all older departures
|
|
10
|
+
* - remove departures that are in the same time range as the new ones
|
|
11
|
+
* (to prevent duplicates and to keep the cache clean and up-to-date)
|
|
12
|
+
*/
|
|
13
|
+
replaceDeparturesForStop(departures: IPublicGtfsDepartureCacheDto[], stopId: string, intervalParams: Required<IRefreshPublicDepartureParams>): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
var PublicGtfsDepartureRepository_1;
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.PublicGtfsDepartureRepository = void 0;
|
|
23
|
+
const const_1 = require("../../../../schema-definitions/ropid-gtfs/redis/const");
|
|
24
|
+
const PublicGtfsDepartureDtoSchema_1 = require("../../../../schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema");
|
|
25
|
+
const RedisModel_1 = require("@golemio/core/dist/integration-engine/models/RedisModel");
|
|
26
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
27
|
+
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
28
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
29
|
+
let PublicGtfsDepartureRepository = exports.PublicGtfsDepartureRepository = PublicGtfsDepartureRepository_1 = class PublicGtfsDepartureRepository extends RedisModel_1.RedisModel {
|
|
30
|
+
constructor() {
|
|
31
|
+
super("GtfsDepartureRepository", {
|
|
32
|
+
decodeDataAfterGet: JSON.parse,
|
|
33
|
+
encodeDataBeforeSave: JSON.stringify,
|
|
34
|
+
isKeyConstructedFromData: false,
|
|
35
|
+
prefix: PublicGtfsDepartureRepository_1.NAMESPACE_PREFIX,
|
|
36
|
+
}, new golemio_validator_1.JSONSchemaValidator("PublicGtfsDepartureRepositoryValidator", PublicGtfsDepartureDtoSchema_1.PublicGtfsDepartureDtoSchema));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Save new departures for a stop and
|
|
40
|
+
* - remove all older departures
|
|
41
|
+
* - remove departures that are in the same time range as the new ones
|
|
42
|
+
* (to prevent duplicates and to keep the cache clean and up-to-date)
|
|
43
|
+
*/
|
|
44
|
+
replaceDeparturesForStop(departures, stopId, intervalParams) {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
try {
|
|
47
|
+
yield this.validator.Validate(departures);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
throw new golemio_errors_1.ValidationError("Error while validating departures", this.constructor.name, err);
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const sortedSetKey = `${this.prefix}:${stopId}`;
|
|
54
|
+
const pipeline = this.connection.pipeline();
|
|
55
|
+
// Automatically remove departures that are older than 3 hours to keep the cache clean
|
|
56
|
+
pipeline.zremrangebyscore(sortedSetKey, "-inf", new Date().getTime() / 1000 - 3 * 3600);
|
|
57
|
+
const firstDepartureScore = new Date(departures[0].departure_datetime).getTime() / 1000;
|
|
58
|
+
const lastDepartureScore = new Date(departures[departures.length - 1].departure_datetime).getTime() / 1000;
|
|
59
|
+
// Remove departures that are in the same time range
|
|
60
|
+
pipeline.zremrangebyscore(sortedSetKey, firstDepartureScore, lastDepartureScore);
|
|
61
|
+
for (const departure of departures) {
|
|
62
|
+
const departureScore = new Date(departure.departure_datetime).getTime() / 1000;
|
|
63
|
+
pipeline.zadd(sortedSetKey, departureScore, JSON.stringify(departure));
|
|
64
|
+
}
|
|
65
|
+
pipeline.expire(sortedSetKey, intervalParams.intervalToHours * 3600);
|
|
66
|
+
yield pipeline.exec();
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
if (err instanceof golemio_errors_1.AbstractGolemioError) {
|
|
70
|
+
throw err;
|
|
71
|
+
}
|
|
72
|
+
throw new golemio_errors_1.GeneralError(`${this.constructor.name}: error while saving departures`, this.constructor.name, err);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
PublicGtfsDepartureRepository.NAMESPACE_PREFIX = const_1.PUBLIC_DEPARTURE_NAMESPACE_PREFIX;
|
|
78
|
+
exports.PublicGtfsDepartureRepository = PublicGtfsDepartureRepository = PublicGtfsDepartureRepository_1 = __decorate([
|
|
79
|
+
(0, tsyringe_1.injectable)(),
|
|
80
|
+
__metadata("design:paramtypes", [])
|
|
81
|
+
], PublicGtfsDepartureRepository);
|
|
82
|
+
//# sourceMappingURL=PublicGtfsDepartureRepository.js.map
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublicGtfsDepartureRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/PublicGtfsDepartureRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,iFAAgF;AAEhF,uIAA0G;AAC1G,wFAAqF;AACrF,6EAA+G;AAC/G,mFAAkF;AAClF,iEAAgE;AAGzD,IAAM,6BAA6B,6EAAnC,MAAM,6BAA8B,SAAQ,uBAAU;IAGzD;QACI,KAAK,CACD,yBAAyB,EACzB;YACI,kBAAkB,EAAE,IAAI,CAAC,KAAK;YAC9B,oBAAoB,EAAE,IAAI,CAAC,SAAS;YACpC,wBAAwB,EAAE,KAAK;YAC/B,MAAM,EAAE,+BAA6B,CAAC,gBAAgB;SACzD,EACD,IAAI,uCAAmB,CAAC,wCAAwC,EAAE,2DAA4B,CAAC,CAClG,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACU,wBAAwB,CACjC,UAA0C,EAC1C,MAAc,EACd,cAAuD;;YAEvD,IAAI;gBACA,MAAM,IAAI,CAAC,SAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC9C;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,gCAAe,CAAC,mCAAmC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAC9F;YAED,IAAI;gBACA,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAE5C,sFAAsF;gBACtF,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;gBAExF,MAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;gBACxF,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;gBAE3G,oDAAoD;gBACpD,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;gBAEjF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;oBAChC,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;oBAC/E,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;iBAC1E;gBAED,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;gBACrE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;aACzB;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;oBACrC,MAAM,GAAG,CAAC;iBACb;gBAED,MAAM,IAAI,6BAAY,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,iCAAiC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACjH;QACL,CAAC;KAAA;;AA3Da,8CAAgB,GAAG,yCAAiC,AAApC,CAAqC;wCAD1D,6BAA6B;IADzC,IAAA,qBAAU,GAAE;;GACA,6BAA6B,CA6DzC"}
|
package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.d.ts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
+
import { IPublicDepartureDto } from "../../interfaces/IPublicDepartureDto";
|
|
2
|
+
import { IRefreshPublicDepartureParams } from "../../workers/timetables/tasks/interfaces/IRefreshPublicDepartureParams";
|
|
3
|
+
import { ISimpleConfig } from "@golemio/core/dist/helpers/configuration/ISimpleConfig";
|
|
4
|
+
import { ILogger } from "@golemio/core/dist/helpers/logger";
|
|
1
5
|
import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
|
|
2
|
-
import { SourceTableSuffixEnum } from "../../helpers/SourceTableSuffixEnum";
|
|
3
6
|
import { Transaction } from "@golemio/core/dist/shared/sequelize";
|
|
7
|
+
import { SourceTableSuffixEnum } from "../../helpers/SourceTableSuffixEnum";
|
|
4
8
|
export declare class DeparturesRepository extends PostgresModel implements IModel {
|
|
5
|
-
|
|
9
|
+
private config;
|
|
10
|
+
private logger;
|
|
11
|
+
constructor(config: ISimpleConfig, logger: ILogger);
|
|
6
12
|
createAndPopulate: (sourceTableSuffix: SourceTableSuffixEnum) => Promise<void>;
|
|
13
|
+
countDeparturesForPublicCache: (intervalParams: Required<IRefreshPublicDepartureParams>) => Promise<number>;
|
|
14
|
+
getDepaturesForPublicCache: (page: number, pageSize: number, intervalParams: Required<IRefreshPublicDepartureParams>) => Promise<IPublicDepartureDto[]>;
|
|
7
15
|
replaceByTmp: (transaction: Transaction) => Promise<void>;
|
|
8
16
|
analyze: () => Promise<void>;
|
|
9
17
|
}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
2
14
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
15
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
16
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -13,13 +25,15 @@ exports.DeparturesRepository = void 0;
|
|
|
13
25
|
const RouteTypeEnums_1 = require("../../../../helpers/RouteTypeEnums");
|
|
14
26
|
const const_1 = require("../../../../schema-definitions/const");
|
|
15
27
|
const precomputed_1 = require("../../../../schema-definitions/ropid-gtfs/models/precomputed");
|
|
16
|
-
const
|
|
17
|
-
const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
|
|
28
|
+
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
18
29
|
const models_1 = require("@golemio/core/dist/integration-engine/models");
|
|
30
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
19
31
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
32
|
+
const sequelize_1 = require("@golemio/core/dist/shared/sequelize");
|
|
33
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
20
34
|
const SourceTableSuffixEnum_1 = require("../../helpers/SourceTableSuffixEnum");
|
|
21
|
-
class DeparturesRepository extends models_1.PostgresModel {
|
|
22
|
-
constructor() {
|
|
35
|
+
let DeparturesRepository = exports.DeparturesRepository = class DeparturesRepository extends models_1.PostgresModel {
|
|
36
|
+
constructor(config, logger) {
|
|
23
37
|
super("DeparturesRepository", {
|
|
24
38
|
pgTableName: precomputed_1.DeparturesModel.TABLE_NAME,
|
|
25
39
|
pgSchema: const_1.PG_SCHEMA,
|
|
@@ -27,8 +41,11 @@ class DeparturesRepository extends models_1.PostgresModel {
|
|
|
27
41
|
attributesToRemove: ["id", "created_at", "updated_at"],
|
|
28
42
|
savingType: "insertOnly",
|
|
29
43
|
}, new golemio_validator_1.JSONSchemaValidator("DeparturesRepository", precomputed_1.DeparturesModel.jsonSchema));
|
|
44
|
+
this.config = config;
|
|
45
|
+
this.logger = logger;
|
|
30
46
|
this.createAndPopulate = (sourceTableSuffix) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
const
|
|
47
|
+
const nodeEnv = this.config.getValue("env.NODE_ENV", "development");
|
|
48
|
+
const timeConstraintLiteral = nodeEnv !== "test" ? `WHERE gtfs_timestamp(t.arrival_time, t4.date) > now() - interval '6 hours'` : "";
|
|
32
49
|
/* eslint-disable max-len */
|
|
33
50
|
const sql = `
|
|
34
51
|
SELECT
|
|
@@ -89,10 +106,59 @@ class DeparturesRepository extends models_1.PostgresModel {
|
|
|
89
106
|
});
|
|
90
107
|
}
|
|
91
108
|
catch (err) {
|
|
92
|
-
|
|
109
|
+
this.logger.error(err);
|
|
93
110
|
throw err;
|
|
94
111
|
}
|
|
95
112
|
});
|
|
113
|
+
this.countDeparturesForPublicCache = (intervalParams) => __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
try {
|
|
115
|
+
return yield this.sequelizeModel.count({
|
|
116
|
+
where: {
|
|
117
|
+
departure_datetime: {
|
|
118
|
+
[sequelize_1.Op.between]: [
|
|
119
|
+
sequelize_1.Sequelize.literal(`now() + interval '${intervalParams.intervalFromHours} hours'`),
|
|
120
|
+
sequelize_1.Sequelize.literal(`now() + interval '${intervalParams.intervalToHours} hours'`),
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
throw new golemio_errors_1.GeneralError("Error while getting number of departures", this.constructor.name, err);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
this.getDepaturesForPublicCache = (page, pageSize, intervalParams) => __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
try {
|
|
132
|
+
return yield this.sequelizeModel.findAll({
|
|
133
|
+
attributes: [
|
|
134
|
+
"stop_id",
|
|
135
|
+
"departure_datetime",
|
|
136
|
+
"arrival_datetime",
|
|
137
|
+
"route_short_name",
|
|
138
|
+
"route_type",
|
|
139
|
+
"trip_id",
|
|
140
|
+
"stop_sequence",
|
|
141
|
+
"platform_code",
|
|
142
|
+
"trip_headsign",
|
|
143
|
+
],
|
|
144
|
+
where: {
|
|
145
|
+
departure_datetime: {
|
|
146
|
+
[sequelize_1.Op.between]: [
|
|
147
|
+
sequelize_1.Sequelize.literal(`now() + interval '${intervalParams.intervalFromHours} hours'`),
|
|
148
|
+
sequelize_1.Sequelize.literal(`now() + interval '${intervalParams.intervalToHours} hours'`),
|
|
149
|
+
],
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
order: [["departure_datetime", "ASC"]],
|
|
153
|
+
offset: page * pageSize,
|
|
154
|
+
limit: pageSize,
|
|
155
|
+
raw: true,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
throw new golemio_errors_1.GeneralError("Error while getting departures for public cache", this.constructor.name, err);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
96
162
|
this.replaceByTmp = (transaction) => __awaiter(this, void 0, void 0, function* () {
|
|
97
163
|
try {
|
|
98
164
|
const tableName = precomputed_1.DeparturesModel.TABLE_NAME;
|
|
@@ -106,7 +172,7 @@ class DeparturesRepository extends models_1.PostgresModel {
|
|
|
106
172
|
DROP TABLE ${dropTableName} CASCADE;`, { transaction });
|
|
107
173
|
}
|
|
108
174
|
catch (err) {
|
|
109
|
-
|
|
175
|
+
this.logger.error(err);
|
|
110
176
|
throw err;
|
|
111
177
|
}
|
|
112
178
|
});
|
|
@@ -115,11 +181,16 @@ class DeparturesRepository extends models_1.PostgresModel {
|
|
|
115
181
|
yield this.sequelizeModel.sequelize.query(`analyze ${const_1.PG_SCHEMA}.${precomputed_1.DeparturesModel.TABLE_NAME}${SourceTableSuffixEnum_1.SourceTableSuffixEnum.Tmp};`);
|
|
116
182
|
}
|
|
117
183
|
catch (err) {
|
|
118
|
-
|
|
184
|
+
this.logger.error(err);
|
|
119
185
|
throw err;
|
|
120
186
|
}
|
|
121
187
|
});
|
|
122
188
|
}
|
|
123
|
-
}
|
|
124
|
-
exports.DeparturesRepository = DeparturesRepository
|
|
189
|
+
};
|
|
190
|
+
exports.DeparturesRepository = DeparturesRepository = __decorate([
|
|
191
|
+
(0, tsyringe_1.injectable)(),
|
|
192
|
+
__param(0, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.SimpleConfig)),
|
|
193
|
+
__param(1, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
|
|
194
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
195
|
+
], DeparturesRepository);
|
|
125
196
|
//# sourceMappingURL=DeparturesRepository.js.map
|
package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GTFSRouteTypeEnum } from "../../../helpers/RouteTypeEnums";
|
|
2
|
+
export interface IPublicDepartureDto {
|
|
3
|
+
stop_id: string;
|
|
4
|
+
departure_datetime: Date;
|
|
5
|
+
arrival_datetime: Date | null;
|
|
6
|
+
route_short_name: string;
|
|
7
|
+
route_type: GTFSRouteTypeEnum;
|
|
8
|
+
trip_id: string;
|
|
9
|
+
stop_sequence: number;
|
|
10
|
+
platform_code: string | null;
|
|
11
|
+
trip_headsign: string;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPublicDepartureDto.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/interfaces/IPublicDepartureDto.ts"],"names":[],"mappings":""}
|