@golemio/pid 2.8.6 → 2.8.7-dev.963032002
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/20230802143613-ropid-gtfs-update-procedures.js +53 -0
- package/db/migrations/postgresql/sqls/20230802143613-ropid-gtfs-update-procedures-down.sql +7 -0
- package/db/migrations/postgresql/sqls/20230802143613-ropid-gtfs-update-procedures-up.sql +149 -0
- package/dist/integration-engine/ioc/Di.js +0 -4
- package/dist/integration-engine/ioc/Di.js.map +1 -1
- package/dist/integration-engine/ioc/ModuleContainerToken.d.ts +0 -2
- package/dist/integration-engine/ioc/ModuleContainerToken.js +0 -2
- package/dist/integration-engine/ioc/ModuleContainerToken.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/LegacyRopidGTFSWorker.d.ts +1 -1
- package/dist/integration-engine/ropid-gtfs/LegacyRopidGTFSWorker.js +6 -8
- package/dist/integration-engine/ropid-gtfs/LegacyRopidGTFSWorker.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.d.ts +30 -0
- package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.js +152 -0
- package/dist/integration-engine/ropid-gtfs/RopidGtfsFacade.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/RopidGtfsMetadataRepository.d.ts +22 -0
- package/dist/integration-engine/ropid-gtfs/RopidGtfsMetadataRepository.js +120 -0
- package/dist/integration-engine/ropid-gtfs/RopidGtfsMetadataRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGtfsRepository.d.ts +18 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGtfsRepository.js +95 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGtfsRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.d.ts +1 -2
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js +2 -16
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/MinMaxStopSequencesRepository.d.ts +1 -4
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/MinMaxStopSequencesRepository.js +2 -38
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/MinMaxStopSequencesRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.d.ts +1 -4
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.js +2 -37
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/ServicesCalendarRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/TripScheduleRepository.d.ts +2 -4
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/TripScheduleRepository.js +2 -38
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/TripScheduleRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/facade/DeparturePresetsFacade.d.ts +3 -3
- package/dist/integration-engine/ropid-gtfs/facade/DeparturePresetsFacade.js +17 -15
- package/dist/integration-engine/ropid-gtfs/facade/DeparturePresetsFacade.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/index.d.ts +1 -1
- package/dist/integration-engine/ropid-gtfs/index.js +1 -1
- package/dist/integration-engine/ropid-gtfs/index.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js +8 -1
- 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/workers/presets/tasks/SavePresetsDataTask.js +3 -3
- package/dist/integration-engine/ropid-gtfs/workers/presets/tasks/SavePresetsDataTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckForNewDataTask.d.ts +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckForNewDataTask.js +3 -5
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckForNewDataTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.d.ts +6 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js +54 -38
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/DownloadDatasetsTask.d.ts +3 -2
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/DownloadDatasetsTask.js +8 -7
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/DownloadDatasetsTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPrecomputedTablesTask.d.ts +2 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPrecomputedTablesTask.js +6 -3
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPrecomputedTablesTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/TransformAndSaveDataTask.d.ts +2 -3
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/TransformAndSaveDataTask.js +12 -26
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/TransformAndSaveDataTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/HelperTypes.d.ts +2 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/HelperTypes.js +11 -6
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/HelperTypes.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.d.ts +3 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.js +14 -17
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/PrecomputedTablesFacade.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/RopidGtfsFactory.d.ts +2 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/RopidGtfsFactory.js +8 -5
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/helpers/RopidGtfsFactory.js.map +1 -1
- package/dist/integration-engine/shared/RopidMetadataModel.d.ts +5 -1
- package/dist/integration-engine/shared/RopidMetadataModel.js +9 -19
- package/dist/integration-engine/shared/RopidMetadataModel.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.d.ts +0 -3
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js +0 -45
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/AgencyDto.js +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/AgencyDto.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/CalendarDatesDto.js +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/CalendarDatesDto.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/CalendarDto.js +6 -6
- package/dist/schema-definitions/ropid-gtfs/models/CalendarDto.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/RouteDto.js +3 -3
- package/dist/schema-definitions/ropid-gtfs/models/RouteDto.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/ShapeDto.js +2 -2
- package/dist/schema-definitions/ropid-gtfs/models/ShapeDto.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/StopDto.d.ts +1 -2
- package/dist/schema-definitions/ropid-gtfs/models/StopDto.js +5 -25
- package/dist/schema-definitions/ropid-gtfs/models/StopDto.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/StopTimesDto.d.ts +1 -2
- package/dist/schema-definitions/ropid-gtfs/models/StopTimesDto.js +3 -14
- package/dist/schema-definitions/ropid-gtfs/models/StopTimesDto.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/TripDto.js +2 -2
- package/dist/schema-definitions/ropid-gtfs/models/TripDto.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.d.ts +1 -2
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js +0 -14
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js.map +1 -1
- package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.d.ts +1 -2
- package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.js +0 -8
- package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/models/VPTripsModel.d.ts +1 -2
- package/dist/schema-definitions/vehicle-positions/models/VPTripsModel.js +0 -8
- package/dist/schema-definitions/vehicle-positions/models/VPTripsModel.js.map +1 -1
- package/package.json +1 -1
- package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.d.ts +0 -36
- package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.js +0 -229
- package/dist/integration-engine/ropid-gtfs/RopidGTFSMetadataModel.js.map +0 -1
- package/dist/integration-engine/ropid-gtfs/utils.d.ts +0 -4
- package/dist/integration-engine/ropid-gtfs/utils.js +0 -28
- package/dist/integration-engine/ropid-gtfs/utils.js.map +0 -1
|
@@ -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', '20230802143613-ropid-gtfs-update-procedures-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', '20230802143613-ropid-gtfs-update-procedures-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,7 @@
|
|
|
1
|
+
DROP PROCEDURE ropidgtfs_replaceAllSavedTables(in tableNames varchar(255));
|
|
2
|
+
DROP PROCEDURE ropidgtfs_prepareTmpTables();
|
|
3
|
+
DROP PROCEDURE ropidgtfs_hotswap(IN tableName varchar(255));
|
|
4
|
+
DROP PROCEDURE ropidgtfs_prepareTmpTable(IN tableName varchar(255));
|
|
5
|
+
DROP PROCEDURE ropidgtfs_cleanTmpTables();
|
|
6
|
+
DROP PROCEDURE ropidgtfs_cleanOldTables();
|
|
7
|
+
DROP PROCEDURE ropidgtfs_preparePrecomputedTmpTables();
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
CREATE OR REPLACE PROCEDURE ropidgtfs_hotswap(IN tableName varchar(255))
|
|
2
|
+
LANGUAGE plpgsql
|
|
3
|
+
SET search_path FROM CURRENT
|
|
4
|
+
AS $procedure$
|
|
5
|
+
declare
|
|
6
|
+
tableNameActual varchar(255);
|
|
7
|
+
tableNameTmp varchar(255);
|
|
8
|
+
tableNameDrop varchar(255);
|
|
9
|
+
begin
|
|
10
|
+
select tableName || '_actual' into tableNameActual;
|
|
11
|
+
select tableName || '_tmp' into tableNameTmp;
|
|
12
|
+
select tableName || '_old' into tableNameDrop;
|
|
13
|
+
|
|
14
|
+
EXECUTE format('LOCK %I IN EXCLUSIVE MODE', tableName);
|
|
15
|
+
EXECUTE format('ALTER TABLE %I NO INHERIT %I', tableNameActual, tableName);
|
|
16
|
+
|
|
17
|
+
EXECUTE format('ALTER TABLE %I ADD create_batch_id int8 NULL', tableNameTmp);
|
|
18
|
+
EXECUTE format('ALTER TABLE %I ADD COLUMN created_at timestamptz NULL DEFAULT now()', tableNameTmp);
|
|
19
|
+
EXECUTE format('ALTER TABLE %I ADD created_by varchar(150) NULL', tableNameTmp);
|
|
20
|
+
EXECUTE format('ALTER TABLE %I ADD update_batch_id int8 NULL', tableNameTmp);
|
|
21
|
+
EXECUTE format('ALTER TABLE %I ADD COLUMN updated_at timestamptz NULL DEFAULT now()', tableNameTmp);
|
|
22
|
+
EXECUTE format('ALTER TABLE %I ADD updated_by varchar(150) NULL', tableNameTmp);
|
|
23
|
+
|
|
24
|
+
EXECUTE format('ALTER TABLE %I RENAME TO %I', tableNameActual, tableNameDrop);
|
|
25
|
+
EXECUTE format('ALTER TABLE %I RENAME TO %I', tableNameTmp, tableNameActual);
|
|
26
|
+
EXECUTE format('ALTER TABLE %I INHERIT %I', tableNameActual, tableName);
|
|
27
|
+
EXECUTE format('DROP TABLE %I', tableNameDrop);
|
|
28
|
+
end;
|
|
29
|
+
$procedure$;
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
CREATE OR REPLACE PROCEDURE ropidgtfs_prepareTmpTable(IN tableName varchar(255))
|
|
33
|
+
LANGUAGE plpgsql
|
|
34
|
+
SET search_path FROM CURRENT
|
|
35
|
+
AS $procedure$
|
|
36
|
+
declare
|
|
37
|
+
tableNameActual varchar(255);
|
|
38
|
+
tableNameTmp varchar(255);
|
|
39
|
+
tableNameDrop varchar(255);
|
|
40
|
+
begin
|
|
41
|
+
select tableName || '_tmp' into tableNameTmp;
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
EXECUTE format('create table %I (like %I including all);', tableNameTmp, tableName);
|
|
45
|
+
EXECUTE format('ALTER TABLE %I drop COLUMN create_batch_id', tableNameTmp);
|
|
46
|
+
EXECUTE format('ALTER TABLE %I drop COLUMN created_at', tableNameTmp);
|
|
47
|
+
EXECUTE format('ALTER TABLE %I drop COLUMN created_by', tableNameTmp);
|
|
48
|
+
EXECUTE format('ALTER TABLE %I drop COLUMN update_batch_id', tableNameTmp);
|
|
49
|
+
EXECUTE format('ALTER TABLE %I drop COLUMN updated_at', tableNameTmp);
|
|
50
|
+
EXECUTE format('ALTER TABLE %I drop COLUMN updated_by', tableNameTmp);
|
|
51
|
+
|
|
52
|
+
end;
|
|
53
|
+
$procedure$;
|
|
54
|
+
|
|
55
|
+
CREATE OR REPLACE PROCEDURE ropidgtfs_replaceAllSavedTables(in tableNames varchar(255))
|
|
56
|
+
LANGUAGE plpgsql
|
|
57
|
+
SET search_path FROM CURRENT
|
|
58
|
+
AS $procedure$
|
|
59
|
+
declare
|
|
60
|
+
currentTable varchar(255);
|
|
61
|
+
begin
|
|
62
|
+
for currentTable in
|
|
63
|
+
select unnest(string_to_array(tableNames,','))
|
|
64
|
+
loop
|
|
65
|
+
call ropidgtfs_hotswap(currentTable);
|
|
66
|
+
end loop;
|
|
67
|
+
end;
|
|
68
|
+
$procedure$;
|
|
69
|
+
|
|
70
|
+
CREATE OR REPLACE PROCEDURE ropidgtfs_prepareTmpTables()
|
|
71
|
+
LANGUAGE plpgsql
|
|
72
|
+
SET search_path FROM CURRENT
|
|
73
|
+
AS $procedure$
|
|
74
|
+
begin
|
|
75
|
+
CALL ropidgtfs_cleanTmpTables();
|
|
76
|
+
CALL ropidgtfs_cleanOldTables();
|
|
77
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_agency');
|
|
78
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_calendar');
|
|
79
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_calendar_dates');
|
|
80
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_shapes');
|
|
81
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_stop_times');
|
|
82
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_stops');
|
|
83
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_routes');
|
|
84
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_trips');
|
|
85
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_cis_stops');
|
|
86
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_cis_stop_groups');
|
|
87
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_run_numbers');
|
|
88
|
+
CALL ropidgtfs_prepareTmpTable('ropidgtfs_ois');
|
|
89
|
+
alter table ropidgtfs_stop_times_tmp drop computed_dwell_time_seconds;
|
|
90
|
+
alter table ropidgtfs_stop_times_tmp add computed_dwell_time_seconds int2 NOT NULL GENERATED ALWAYS AS (pid.calculate_dwell_time_seconds(arrival_time, departure_time)) stored;
|
|
91
|
+
end
|
|
92
|
+
$procedure$;
|
|
93
|
+
|
|
94
|
+
CREATE OR REPLACE PROCEDURE ropidgtfs_preparePrecomputedTmpTables()
|
|
95
|
+
LANGUAGE plpgsql
|
|
96
|
+
SET search_path FROM CURRENT
|
|
97
|
+
AS $procedure$
|
|
98
|
+
begin
|
|
99
|
+
create table "ropidgtfs_precomputed_services_calendar_tmp" (like "ropidgtfs_precomputed_services_calendar" including all);
|
|
100
|
+
create table "ropidgtfs_precomputed_minmax_stop_sequences_tmp" (like "ropidgtfs_precomputed_minmax_stop_sequences" including all);
|
|
101
|
+
create table "ropidgtfs_precomputed_trip_schedule_tmp" (like "ropidgtfs_precomputed_trip_schedule" including all);
|
|
102
|
+
end
|
|
103
|
+
$procedure$;
|
|
104
|
+
|
|
105
|
+
CREATE OR REPLACE PROCEDURE ropidgtfs_cleanTmpTables()
|
|
106
|
+
LANGUAGE plpgsql
|
|
107
|
+
SET search_path FROM CURRENT
|
|
108
|
+
AS $procedure$
|
|
109
|
+
begin
|
|
110
|
+
drop table if exists "ropidgtfs_agency_tmp";
|
|
111
|
+
drop table if exists "ropidgtfs_calendar_tmp";
|
|
112
|
+
drop table if exists "ropidgtfs_calendar_dates_tmp";
|
|
113
|
+
drop table if exists "ropidgtfs_shapes_tmp";
|
|
114
|
+
drop table if exists "ropidgtfs_stop_times_tmp";
|
|
115
|
+
drop table if exists "ropidgtfs_stops_tmp";
|
|
116
|
+
drop table if exists "ropidgtfs_routes_tmp";
|
|
117
|
+
drop table if exists "ropidgtfs_trips_tmp";
|
|
118
|
+
drop table if exists "ropidgtfs_cis_stops_tmp";
|
|
119
|
+
drop table if exists "ropidgtfs_cis_stop_groups_tmp";
|
|
120
|
+
drop table if exists "ropidgtfs_run_numbers_tmp";
|
|
121
|
+
drop table if exists "ropidgtfs_ois_tmp";
|
|
122
|
+
drop table if exists "ropidgtfs_precomputed_services_calendar_tmp";
|
|
123
|
+
drop table if exists "ropidgtfs_precomputed_minmax_stop_sequences_tmp";
|
|
124
|
+
drop table if exists "ropidgtfs_precomputed_trip_schedule_tmp";
|
|
125
|
+
end
|
|
126
|
+
$procedure$;
|
|
127
|
+
|
|
128
|
+
CREATE OR REPLACE PROCEDURE ropidgtfs_cleanOldTables()
|
|
129
|
+
LANGUAGE plpgsql
|
|
130
|
+
SET search_path FROM CURRENT
|
|
131
|
+
AS $procedure$
|
|
132
|
+
begin
|
|
133
|
+
drop table if exists "ropidgtfs_agency_old";
|
|
134
|
+
drop table if exists "ropidgtfs_calendar_old";
|
|
135
|
+
drop table if exists "ropidgtfs_calendar_dates_old";
|
|
136
|
+
drop table if exists "ropidgtfs_shapes_old";
|
|
137
|
+
drop table if exists "ropidgtfs_stop_times_old";
|
|
138
|
+
drop table if exists "ropidgtfs_stops_old";
|
|
139
|
+
drop table if exists "ropidgtfs_routes_old";
|
|
140
|
+
drop table if exists "ropidgtfs_trips_old";
|
|
141
|
+
drop table if exists "ropidgtfs_cis_stops_old";
|
|
142
|
+
drop table if exists "ropidgtfs_cis_stop_groups_old";
|
|
143
|
+
drop table if exists "ropidgtfs_run_numbers_old";
|
|
144
|
+
drop table if exists "ropidgtfs_ois_old";
|
|
145
|
+
drop table if exists "ropidgtfs_precomputed_services_calendar_old";
|
|
146
|
+
drop table if exists "ropidgtfs_precomputed_minmax_stop_sequences_old";
|
|
147
|
+
drop table if exists "ropidgtfs_precomputed_trip_schedule_old";
|
|
148
|
+
end
|
|
149
|
+
$procedure$;
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PidContainer = void 0;
|
|
4
|
-
const RopidGTFSMetadataModel_1 = require("../ropid-gtfs/RopidGTFSMetadataModel");
|
|
5
4
|
const DeparturePresetsRepository_1 = require("../ropid-gtfs/data-access/DeparturePresetsRepository");
|
|
6
|
-
const DeparturePresetsFacade_1 = require("../ropid-gtfs/facade/DeparturePresetsFacade");
|
|
7
5
|
const RopidDeparturesPresetsTransformation_1 = require("../ropid-gtfs/transformations/RopidDeparturesPresetsTransformation");
|
|
8
6
|
const PresetLogRepository_1 = require("../ropid-gtfs/workers/presets/data-access/PresetLogRepository");
|
|
9
7
|
const PresetLogDataSourceFactory_1 = require("../ropid-gtfs/workers/presets/datasources/PresetLogDataSourceFactory");
|
|
@@ -22,7 +20,6 @@ PidContainer.register(ModuleContainerToken_1.ModuleContainerToken.GrafanaLokiDat
|
|
|
22
20
|
PidContainer.registerSingleton(ModuleContainerToken_1.ModuleContainerToken.PresetLogDataSourceFactory, PresetLogDataSourceFactory_1.PresetLogDataSourceFactory);
|
|
23
21
|
//#endregion
|
|
24
22
|
//#region Data Access
|
|
25
|
-
PidContainer.register(ModuleContainerToken_1.ModuleContainerToken.RopidGTFSMetadataModel, RopidGTFSMetadataModel_1.RopidGTFSMetadataModel);
|
|
26
23
|
PidContainer.register(ModuleContainerToken_1.ModuleContainerToken.DeparturePresetsRepository, DeparturePresetsRepository_1.DeparturePresetsRepository);
|
|
27
24
|
PidContainer.register(ModuleContainerToken_1.ModuleContainerToken.PresetLogRepository, PresetLogRepository_1.PresetLogRepository);
|
|
28
25
|
//#endregion
|
|
@@ -31,7 +28,6 @@ PidContainer.register(ModuleContainerToken_1.ModuleContainerToken.RopidDeparture
|
|
|
31
28
|
PidContainer.register(ModuleContainerToken_1.ModuleContainerToken.PresetLogTransformation, PresetLogTransformation_1.PresetLogTransformation);
|
|
32
29
|
//#endregion
|
|
33
30
|
//#region Helpers
|
|
34
|
-
PidContainer.registerSingleton(ModuleContainerToken_1.ModuleContainerToken.DeparturePresetsFacade, DeparturePresetsFacade_1.DeparturePresetsFacade);
|
|
35
31
|
PidContainer.registerSingleton(ModuleContainerToken_1.ModuleContainerToken.PresetLogFilter, LogFilter_1.LogFilter);
|
|
36
32
|
PidContainer.registerSingleton(ModuleContainerToken_1.ModuleContainerToken.RopidMonitoringService, RopidMonitoringService_1.RopidMonitoringService);
|
|
37
33
|
//# sourceMappingURL=Di.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../src/integration-engine/ioc/Di.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../src/integration-engine/ioc/Di.ts"],"names":[],"mappings":";;;AAAA,qGAAmG;AACnG,6HAA2H;AAC3H,uGAAqG;AACrG,qHAAmH;AACnH,wIAAsI;AACtI,+EAA6E;AAC7E,yGAAuG;AACvG,mHAAiH;AACjH,qEAA0F;AAE1F,iEAA8D;AAE9D,wBAAwB;AACxB,MAAM,YAAY,GAAwB,+BAA0B,CAAC,oBAAoB,EAAE,CAAC;AAuBnF,oCAAY;AAtBrB,YAAY;AAEZ,qBAAqB;AACrB,YAAY,CAAC,QAAQ,CAAC,2CAAoB,CAAC,6BAA6B,EAAE,6DAA6B,CAAC,CAAC;AACzG,YAAY,CAAC,iBAAiB,CAAC,2CAAoB,CAAC,0BAA0B,EAAE,uDAA0B,CAAC,CAAC;AAC5G,YAAY;AAEZ,qBAAqB;AACrB,YAAY,CAAC,QAAQ,CAAC,2CAAoB,CAAC,0BAA0B,EAAE,uDAA0B,CAAC,CAAC;AACnG,YAAY,CAAC,QAAQ,CAAC,2CAAoB,CAAC,mBAAmB,EAAE,yCAAmB,CAAC,CAAC;AACrF,YAAY;AAEZ,yBAAyB;AACzB,YAAY,CAAC,QAAQ,CAAC,2CAAoB,CAAC,oCAAoC,EAAE,2EAAoC,CAAC,CAAC;AACvH,YAAY,CAAC,QAAQ,CAAC,2CAAoB,CAAC,uBAAuB,EAAE,iDAAuB,CAAC,CAAC;AAC7F,YAAY;AAEZ,iBAAiB;AACjB,YAAY,CAAC,iBAAiB,CAAC,2CAAoB,CAAC,eAAe,EAAE,qBAAS,CAAC,CAAC;AAChF,YAAY,CAAC,iBAAiB,CAAC,2CAAoB,CAAC,sBAAsB,EAAE,+CAAsB,CAAC,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
declare const ModuleContainerToken: {
|
|
2
|
-
RopidGTFSMetadataModel: symbol;
|
|
3
2
|
DeparturePresetsRepository: symbol;
|
|
4
3
|
RopidDeparturesPresetsTransformation: symbol;
|
|
5
|
-
DeparturePresetsFacade: symbol;
|
|
6
4
|
GrafanaLokiDataSourceProvider: symbol;
|
|
7
5
|
PresetLogDataSourceFactory: symbol;
|
|
8
6
|
PresetLogTransformation: symbol;
|
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ModuleContainerToken = void 0;
|
|
4
4
|
const ModuleContainerToken = {
|
|
5
|
-
RopidGTFSMetadataModel: Symbol(),
|
|
6
5
|
DeparturePresetsRepository: Symbol(),
|
|
7
6
|
RopidDeparturesPresetsTransformation: Symbol(),
|
|
8
|
-
DeparturePresetsFacade: Symbol(),
|
|
9
7
|
GrafanaLokiDataSourceProvider: Symbol(),
|
|
10
8
|
PresetLogDataSourceFactory: Symbol(),
|
|
11
9
|
PresetLogTransformation: Symbol(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleContainerToken.js","sourceRoot":"","sources":["../../../src/integration-engine/ioc/ModuleContainerToken.ts"],"names":[],"mappings":";;;AAAA,MAAM,oBAAoB,GAAG;IACzB,
|
|
1
|
+
{"version":3,"file":"ModuleContainerToken.js","sourceRoot":"","sources":["../../../src/integration-engine/ioc/ModuleContainerToken.ts"],"names":[],"mappings":";;;AAAA,MAAM,oBAAoB,GAAG;IACzB,0BAA0B,EAAE,MAAM,EAAE;IACpC,oCAAoC,EAAE,MAAM,EAAE;IAC9C,6BAA6B,EAAE,MAAM,EAAE;IACvC,0BAA0B,EAAE,MAAM,EAAE;IACpC,uBAAuB,EAAE,MAAM,EAAE;IACjC,mBAAmB,EAAE,MAAM,EAAE;IAC7B,eAAe,EAAE,MAAM,EAAE;IACzB,sBAAsB,EAAE,MAAM,EAAE;CACnC,CAAC;AAEO,oDAAoB"}
|
|
@@ -10,8 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.LegacyRopidGTFSWorker = void 0;
|
|
13
|
-
const Di_1 = require("../ioc/Di");
|
|
14
|
-
const ModuleContainerToken_1 = require("../ioc/ModuleContainerToken");
|
|
15
13
|
const ropid_departures_presets_1 = require("../../schema-definitions/ropid-departures-presets");
|
|
16
14
|
const ropid_gtfs_1 = require("../../schema-definitions/ropid-gtfs");
|
|
17
15
|
const config_1 = require("@golemio/core/dist/integration-engine/config");
|
|
@@ -21,7 +19,8 @@ const workers_1 = require("@golemio/core/dist/integration-engine/workers");
|
|
|
21
19
|
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
22
20
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
23
21
|
const _1 = require(".");
|
|
24
|
-
const
|
|
22
|
+
const Di_1 = require("./ioc/Di");
|
|
23
|
+
const RopidGtfsContainerToken_1 = require("./ioc/RopidGtfsContainerToken");
|
|
25
24
|
class LegacyRopidGTFSWorker extends workers_1.BaseWorker {
|
|
26
25
|
constructor() {
|
|
27
26
|
super();
|
|
@@ -32,7 +31,7 @@ class LegacyRopidGTFSWorker extends workers_1.BaseWorker {
|
|
|
32
31
|
// checking DEPARTURES_PRESETS dataset
|
|
33
32
|
try {
|
|
34
33
|
const departuresPresetsServerLastModified = yield this.dataSourceDeparturesPresets.getLastModified();
|
|
35
|
-
const departuresPresetsDbLastModified = yield this.
|
|
34
|
+
const departuresPresetsDbLastModified = yield this.metadataRepository.getLastModified(_1.DatasetEnum.DEPARTURES_PRESETS);
|
|
36
35
|
if (departuresPresetsServerLastModified !== departuresPresetsDbLastModified.lastModified) {
|
|
37
36
|
yield this.sendMessageToExchange("workers." + this.queuePrefix + ".downloadDeparturesPresets", "Just do it!");
|
|
38
37
|
}
|
|
@@ -53,7 +52,7 @@ class LegacyRopidGTFSWorker extends workers_1.BaseWorker {
|
|
|
53
52
|
try {
|
|
54
53
|
const file = yield this.dataSourceDeparturesPresets.getAll();
|
|
55
54
|
const lastModified = yield this.dataSourceDeparturesPresets.getLastModified();
|
|
56
|
-
const facade = Di_1.
|
|
55
|
+
const facade = Di_1.RopidGtfsContainer.resolve(RopidGtfsContainerToken_1.RopidGtfsContainerToken.DeparturePresetsFacade);
|
|
57
56
|
yield facade.handleNewDeparturePresets(file.data, lastModified);
|
|
58
57
|
}
|
|
59
58
|
catch (err) {
|
|
@@ -61,12 +60,11 @@ class LegacyRopidGTFSWorker extends workers_1.BaseWorker {
|
|
|
61
60
|
throw err;
|
|
62
61
|
}
|
|
63
62
|
else {
|
|
64
|
-
throw new golemio_errors_1.GeneralError("Error while downloading departures presets", this.constructor.name, err);
|
|
63
|
+
throw new golemio_errors_1.GeneralError("Error while downloading departures presets: " + err.message, this.constructor.name, err);
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
66
|
});
|
|
68
|
-
|
|
69
|
-
this.metaModel = Di_2.RopidGtfsContainer.resolve(ModuleContainerToken_1.ModuleContainerToken.RopidGTFSMetadataModel);
|
|
67
|
+
this.metadataRepository = Di_1.RopidGtfsContainer.resolve(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGtfsMetadataRepository);
|
|
70
68
|
// Ropid Departures Presets
|
|
71
69
|
this.dataSourceDeparturesPresets = new RetryDataSource_1.RetryDataSource(ropid_departures_presets_1.RopidDeparturesPresets.name + "DataSource", new datasources_1.FTPProtocolStrategy({
|
|
72
70
|
filename: config_1.config.datasources.RopidDeparturesPresetsFilename,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegacyRopidGTFSWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/LegacyRopidGTFSWorker.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"LegacyRopidGTFSWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/LegacyRopidGTFSWorker.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gGAA+F;AAC/F,oEAA4C;AAC5C,yEAAsE;AACtE,mFAA0H;AAC1H,uGAAoG;AACpG,2EAA2E;AAC3E,6EAA8F;AAC9F,mFAAkF;AAClF,wBAAgC;AAGhC,iCAA8C;AAC9C,2EAAwE;AAMxE,MAAa,qBAAsB,SAAQ,oBAAU;IAKjD;QACI,KAAK,EAAE,CAAC;QAqBZ;;WAEG;QACI,iCAA4B,GAAG,GAAwB,EAAE;YAC5D,sCAAsC;YACtC,IAAI;gBACA,MAAM,mCAAmC,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE,CAAC;gBACrG,MAAM,+BAA+B,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,cAAW,CAAC,kBAAkB,CAAC,CAAC;gBACtH,IAAI,mCAAmC,KAAK,+BAA+B,CAAC,YAAY,EAAE;oBACtF,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,4BAA4B,EAAE,aAAa,CAAC,CAAC;iBACjH;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;oBACrC,MAAM,GAAG,CAAC;iBACb;qBAAM;oBACH,MAAM,IAAI,6BAAY,CAAC,iDAAiD,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBACzG;aACJ;QACL,CAAC,CAAA,CAAC;QAEF;;WAEG;QACI,8BAAyB,GAAG,GAAwB,EAAE;YACzD,IAAI;gBACA,MAAM,IAAI,GAA2B,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC;gBACrF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE,CAAC;gBAE9E,MAAM,MAAM,GAAG,uBAAkB,CAAC,OAAO,CAAyB,iDAAuB,CAAC,sBAAsB,CAAC,CAAC;gBAClH,MAAM,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;aACnE;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;oBACrC,MAAM,GAAG,CAAC;iBACb;qBAAM;oBACH,MAAM,IAAI,6BAAY,CAAC,8CAA8C,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;iBACpH;aACJ;QACL,CAAC,CAAA,CAAC;QAzDE,IAAI,CAAC,kBAAkB,GAAG,uBAAkB,CAAC,OAAO,CAChD,iDAAuB,CAAC,2BAA2B,CACtD,CAAC;QAEF,2BAA2B;QAC3B,IAAI,CAAC,2BAA2B,GAAG,IAAI,iCAAe,CAClD,iDAAsB,CAAC,IAAI,GAAG,YAAY,EAC1C,IAAI,iCAAmB,CAAC;YACpB,QAAQ,EAAE,eAAM,CAAC,WAAW,CAAC,8BAA8B;YAC3D,IAAI,EAAE,eAAM,CAAC,WAAW,CAAC,0BAA0B;YACnD,GAAG,EAAE,eAAM,CAAC,WAAW,CAAC,QAAQ;YAChC,QAAQ,EAAE,MAAM;SACnB,CAAC,EACF,IAAI,kCAAoB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAC7C,IAAI,uCAAmB,CAAC,iDAAsB,CAAC,IAAI,GAAG,YAAY,EAAE,iDAAsB,CAAC,oBAAoB,CAAC,CACnH,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,eAAM,CAAC,oBAAoB,GAAG,GAAG,GAAG,sBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxF,CAAC;CAwCJ;AAjED,sDAiEC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IDatabaseConnector } from "@golemio/core/dist/helpers/data-access/postgres/IDatabaseConnector";
|
|
2
|
+
import { Transaction } from "@golemio/core/dist/shared/sequelize";
|
|
3
|
+
import { RopidGtfsRepository } from "./data-access/RopidGtfsRepository";
|
|
4
|
+
import { RopidGtfsMetadataRepository } from "./RopidGtfsMetadataRepository";
|
|
5
|
+
export declare enum DatasetEnum {
|
|
6
|
+
PID_GTFS = "PID_GTFS",
|
|
7
|
+
CIS_STOPS = "CIS_STOPS",
|
|
8
|
+
OIS_MAPPING = "OIS_MAPPING",
|
|
9
|
+
RUN_NUMBERS = "RUN_NUMBERS",
|
|
10
|
+
DEPARTURES_PRESETS = "DEPARTURES_PRESETS"
|
|
11
|
+
}
|
|
12
|
+
export declare class RopidGtfsFacade {
|
|
13
|
+
private ropidGtfsRepository;
|
|
14
|
+
private ropidGtfsMetadataRepository;
|
|
15
|
+
private databaseConnector;
|
|
16
|
+
private name;
|
|
17
|
+
/** Precomputed data repositories */
|
|
18
|
+
private departuresRepository;
|
|
19
|
+
private minMaxStopSequencesRepository;
|
|
20
|
+
private tripScheduleRepository;
|
|
21
|
+
private servicesCalendarRepository;
|
|
22
|
+
constructor(ropidGtfsRepository: RopidGtfsRepository, ropidGtfsMetadataRepository: RopidGtfsMetadataRepository, databaseConnector: IDatabaseConnector);
|
|
23
|
+
checkSavedTmpTables: (dataset: string, version: number) => Promise<void>;
|
|
24
|
+
replaceTables: (datasetInfo: Array<{
|
|
25
|
+
dataset: string;
|
|
26
|
+
version: number;
|
|
27
|
+
}>) => Promise<boolean>;
|
|
28
|
+
private replaceStaticTables;
|
|
29
|
+
replacePrecomputedTables: (t: Transaction) => Promise<void>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
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
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
24
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
25
|
+
};
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.RopidGtfsFacade = exports.DatasetEnum = void 0;
|
|
28
|
+
const precomputed_1 = require("./data-access/precomputed");
|
|
29
|
+
const shared_1 = require("../shared");
|
|
30
|
+
const const_1 = require("../../schema-definitions/const");
|
|
31
|
+
const ropid_gtfs_1 = require("../../schema-definitions/ropid-gtfs");
|
|
32
|
+
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
33
|
+
const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
|
|
34
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
35
|
+
const sequelize_1 = __importDefault(require("@golemio/core/dist/shared/sequelize"));
|
|
36
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
37
|
+
const RopidGtfsRepository_1 = require("./data-access/RopidGtfsRepository");
|
|
38
|
+
const SourceTableSuffixEnum_1 = require("./helpers/SourceTableSuffixEnum");
|
|
39
|
+
const RopidGtfsContainerToken_1 = require("./ioc/RopidGtfsContainerToken");
|
|
40
|
+
const HelperTypes_1 = require("./workers/timetables/tasks/helpers/HelperTypes");
|
|
41
|
+
const RopidGtfsMetadataRepository_1 = require("./RopidGtfsMetadataRepository");
|
|
42
|
+
var DatasetEnum;
|
|
43
|
+
(function (DatasetEnum) {
|
|
44
|
+
DatasetEnum["PID_GTFS"] = "PID_GTFS";
|
|
45
|
+
DatasetEnum["CIS_STOPS"] = "CIS_STOPS";
|
|
46
|
+
DatasetEnum["OIS_MAPPING"] = "OIS_MAPPING";
|
|
47
|
+
DatasetEnum["RUN_NUMBERS"] = "RUN_NUMBERS";
|
|
48
|
+
DatasetEnum["DEPARTURES_PRESETS"] = "DEPARTURES_PRESETS";
|
|
49
|
+
})(DatasetEnum || (exports.DatasetEnum = DatasetEnum = {}));
|
|
50
|
+
let RopidGtfsFacade = exports.RopidGtfsFacade = class RopidGtfsFacade {
|
|
51
|
+
constructor(ropidGtfsRepository, ropidGtfsMetadataRepository, databaseConnector) {
|
|
52
|
+
this.ropidGtfsRepository = ropidGtfsRepository;
|
|
53
|
+
this.ropidGtfsMetadataRepository = ropidGtfsMetadataRepository;
|
|
54
|
+
this.databaseConnector = databaseConnector;
|
|
55
|
+
this.name = this.constructor.name;
|
|
56
|
+
this.checkSavedTmpTables = (dataset, version) => __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const tables = yield this.ropidGtfsMetadataRepository.getAllSaved(dataset, version);
|
|
58
|
+
const tablesArray = [];
|
|
59
|
+
tables.map((table) => {
|
|
60
|
+
tablesArray.push(`'${ropid_gtfs_1.RopidGTFS[table.dataValues.tn].pgTableName}${SourceTableSuffixEnum_1.SourceTableSuffixEnum.Tmp}'`);
|
|
61
|
+
});
|
|
62
|
+
const connection = this.databaseConnector.getConnection();
|
|
63
|
+
const result = yield connection.query(`
|
|
64
|
+
SELECT table_name AS name, count_rows(table_schema, table_name) AS total
|
|
65
|
+
FROM information_schema.tables
|
|
66
|
+
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
|
|
67
|
+
AND table_type = 'BASE TABLE'
|
|
68
|
+
AND table_name in (${tablesArray.join(",")})
|
|
69
|
+
AND table_schema = '${const_1.PG_SCHEMA}';
|
|
70
|
+
`, { type: sequelize_1.default.QueryTypes.SELECT });
|
|
71
|
+
helpers_1.log.info(`Datasets: total rows for ${dataset}: ${JSON.stringify(result)}`);
|
|
72
|
+
if (!result || !result.length || result.some((table) => table.total === 0)) {
|
|
73
|
+
throw new golemio_errors_1.GeneralError("Empty table found", this.constructor.name);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
this.replaceTables = (datasetInfo) => __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
const tables = yield this.ropidGtfsMetadataRepository.find({
|
|
78
|
+
attributes: [[sequelize_1.default.literal(`DISTINCT "key"`), "tn"]],
|
|
79
|
+
where: {
|
|
80
|
+
[sequelize_1.default.Op.or]: datasetInfo.map((item) => ({
|
|
81
|
+
dataset: item.dataset,
|
|
82
|
+
type: shared_1.MetaTypeEnum.STATE,
|
|
83
|
+
value: shared_1.MetaStateEnum.SAVED,
|
|
84
|
+
version: item.version,
|
|
85
|
+
})),
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
const connection = this.databaseConnector.getConnection();
|
|
89
|
+
const t = yield connection.transaction();
|
|
90
|
+
try {
|
|
91
|
+
yield this.replaceStaticTables(tables, t);
|
|
92
|
+
yield this.replacePrecomputedTables(t);
|
|
93
|
+
// save meta
|
|
94
|
+
yield this.ropidGtfsMetadataRepository.bulkCreate(datasetInfo.map((el) => ({
|
|
95
|
+
dataset: el.dataset,
|
|
96
|
+
key: shared_1.MetaDatasetInfoKeyEnum.DEPLOYED,
|
|
97
|
+
type: shared_1.MetaTypeEnum.DATASET_INFO,
|
|
98
|
+
value: "true",
|
|
99
|
+
version: el.version,
|
|
100
|
+
})), { transaction: t });
|
|
101
|
+
yield this.ropidGtfsMetadataRepository.destroy({
|
|
102
|
+
transaction: t,
|
|
103
|
+
where: {
|
|
104
|
+
[sequelize_1.default.Op.or]: datasetInfo.map((item) => ({
|
|
105
|
+
dataset: item.dataset,
|
|
106
|
+
version: {
|
|
107
|
+
[sequelize_1.default.Op.and]: [
|
|
108
|
+
// delete all versions older than ten versions back
|
|
109
|
+
{ [sequelize_1.default.Op.lt]: item.version - 10 },
|
|
110
|
+
{ [sequelize_1.default.Op.ne]: -1 },
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
})),
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
yield t.commit();
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
helpers_1.log.error(err);
|
|
121
|
+
yield t.rollback();
|
|
122
|
+
helpers_1.log.error(`Datasets: replacing failed ${err.toString()}`);
|
|
123
|
+
throw new golemio_errors_1.GeneralError(this.name + ": replaceTables() failed.", undefined, err);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
this.replaceStaticTables = (tables, t) => __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
const tablesArray = tables.map((table) => (0, HelperTypes_1.getTableNameFromModel)(table.dataValues.tn));
|
|
128
|
+
yield this.ropidGtfsRepository.replaceAllTable(tablesArray, t);
|
|
129
|
+
});
|
|
130
|
+
this.replacePrecomputedTables = (t) => __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
yield this.ropidGtfsRepository.replaceAllTable([
|
|
132
|
+
this.servicesCalendarRepository["tableName"],
|
|
133
|
+
this.minMaxStopSequencesRepository["tableName"],
|
|
134
|
+
this.tripScheduleRepository["tableName"],
|
|
135
|
+
], t);
|
|
136
|
+
yield this.departuresRepository.replaceByTmp(t);
|
|
137
|
+
});
|
|
138
|
+
this.departuresRepository = new precomputed_1.DeparturesRepository();
|
|
139
|
+
this.minMaxStopSequencesRepository = new precomputed_1.MinMaxStopSequencesRepository();
|
|
140
|
+
this.tripScheduleRepository = new precomputed_1.TripScheduleRepository();
|
|
141
|
+
this.servicesCalendarRepository = new precomputed_1.ServicesCalendarRepository();
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
exports.RopidGtfsFacade = RopidGtfsFacade = __decorate([
|
|
145
|
+
(0, tsyringe_1.injectable)(),
|
|
146
|
+
__param(0, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGtfsRepository)),
|
|
147
|
+
__param(1, (0, tsyringe_1.inject)(RopidGtfsContainerToken_1.RopidGtfsContainerToken.RopidGtfsMetadataRepository)),
|
|
148
|
+
__param(2, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.PostgresConnector)),
|
|
149
|
+
__metadata("design:paramtypes", [RopidGtfsRepository_1.RopidGtfsRepository,
|
|
150
|
+
RopidGtfsMetadataRepository_1.RopidGtfsMetadataRepository, Object])
|
|
151
|
+
], RopidGtfsFacade);
|
|
152
|
+
//# sourceMappingURL=RopidGtfsFacade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RopidGtfsFacade.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGtfsFacade.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MetaStateEnum, RopidMetadataModel } from "../shared";
|
|
2
|
+
import { BulkCreateOptions, DestroyOptions } from "@golemio/core/dist/shared/sequelize";
|
|
3
|
+
export declare enum DatasetEnum {
|
|
4
|
+
PID_GTFS = "PID_GTFS",
|
|
5
|
+
CIS_STOPS = "CIS_STOPS",
|
|
6
|
+
OIS_MAPPING = "OIS_MAPPING",
|
|
7
|
+
RUN_NUMBERS = "RUN_NUMBERS",
|
|
8
|
+
DEPARTURES_PRESETS = "DEPARTURES_PRESETS"
|
|
9
|
+
}
|
|
10
|
+
export declare class RopidGtfsMetadataRepository extends RopidMetadataModel {
|
|
11
|
+
constructor();
|
|
12
|
+
getAllSaved: (dataset: string, version: number) => Promise<any[]>;
|
|
13
|
+
checkAllTablesHasSavedState: (datasets: Array<{
|
|
14
|
+
dataset: string;
|
|
15
|
+
version: number;
|
|
16
|
+
}>) => Promise<boolean>;
|
|
17
|
+
checkIfNewVersionIsAlreadyDeployed: (dataset: string, version: number) => Promise<boolean>;
|
|
18
|
+
updateState: (dataset: string, name: string, state: MetaStateEnum, version: number) => Promise<any>;
|
|
19
|
+
getNumberOfDownloadRetries: (dataset: string, version: number) => Promise<number>;
|
|
20
|
+
bulkCreate: (data: any[], options: BulkCreateOptions) => Promise<void>;
|
|
21
|
+
destroy: (options: DestroyOptions) => Promise<void>;
|
|
22
|
+
}
|