@golemio/pid 5.17.0-dev.2649869319 → 5.17.0-dev.2661709915
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/20260707120000-recreate-shapes-for-mvt-view-procedure.js +53 -0
- package/db/migrations/postgresql/sqls/20260707120000-recreate-shapes-for-mvt-view-procedure-down.sql +1 -0
- package/db/migrations/postgresql/sqls/20260707120000-recreate-shapes-for-mvt-view-procedure-up.sql +51 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGtfsRepository.d.ts +2 -1
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGtfsRepository.js +7 -9
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGtfsRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPrecomputedTablesTask.js +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPrecomputedTablesTask.js.map +1 -1
- package/package.json +1 -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', '20260707120000-recreate-shapes-for-mvt-view-procedure-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', '20260707120000-recreate-shapes-for-mvt-view-procedure-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/20260707120000-recreate-shapes-for-mvt-view-procedure-down.sql
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
DROP PROCEDURE ropidgtfs_recreateShapesForMvtView();
|
package/db/migrations/postgresql/sqls/20260707120000-recreate-shapes-for-mvt-view-procedure-up.sql
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
-- The ropidgtfs_precomputed_departures swap (rename + DROP CASCADE) silently drops the dependent
|
|
2
|
+
-- materialized view, so the view must be recreated (not just refreshed) after every swap.
|
|
3
|
+
CREATE OR REPLACE PROCEDURE ropidgtfs_recreateShapesForMvtView()
|
|
4
|
+
LANGUAGE plpgsql
|
|
5
|
+
SET search_path FROM CURRENT
|
|
6
|
+
AS $procedure$
|
|
7
|
+
begin
|
|
8
|
+
DROP MATERIALIZED VIEW IF EXISTS v_ropidgtfs_shapes_for_mvt;
|
|
9
|
+
|
|
10
|
+
CREATE MATERIALIZED VIEW v_ropidgtfs_shapes_for_mvt AS
|
|
11
|
+
WITH distinct_pairs AS (
|
|
12
|
+
SELECT DISTINCT
|
|
13
|
+
r.route_id,
|
|
14
|
+
r.route_short_name,
|
|
15
|
+
r.route_type,
|
|
16
|
+
t.shape_id
|
|
17
|
+
FROM ropidgtfs_precomputed_departures rpd
|
|
18
|
+
INNER JOIN ropidgtfs_routes r ON r.route_id = rpd.route_id
|
|
19
|
+
INNER JOIN ropidgtfs_trips t ON t.trip_id = rpd.trip_id
|
|
20
|
+
WHERE rpd.date = CURRENT_DATE AND (t.exceptional = 0)
|
|
21
|
+
)
|
|
22
|
+
SELECT
|
|
23
|
+
dp.route_id,
|
|
24
|
+
dp.route_short_name,
|
|
25
|
+
dp.route_type,
|
|
26
|
+
dp.shape_id,
|
|
27
|
+
-- Douglas-Peucker simplification (~1.2m tolerance) reduces point count while preserving topology (no self-intersections)
|
|
28
|
+
ST_SimplifyPreserveTopology(
|
|
29
|
+
ST_SetSRID(
|
|
30
|
+
ST_MakeLine(ST_MakePoint(s.shape_pt_lon, s.shape_pt_lat) ORDER BY s.shape_pt_sequence),
|
|
31
|
+
4326
|
|
32
|
+
),
|
|
33
|
+
0.000011 -- ~1.2m at CZ latitudes (1° ≈ 111km lat / 63–66km lon)
|
|
34
|
+
) AS shape_geometry
|
|
35
|
+
FROM distinct_pairs dp
|
|
36
|
+
JOIN ropidgtfs_shapes s ON s.shape_id = dp.shape_id
|
|
37
|
+
GROUP BY dp.route_id, dp.route_short_name, dp.route_type, dp.shape_id;
|
|
38
|
+
|
|
39
|
+
CREATE UNIQUE INDEX v_ropidgtfs_shapes_for_mvt_shape_id_route_id_idx
|
|
40
|
+
ON v_ropidgtfs_shapes_for_mvt (shape_id, route_id);
|
|
41
|
+
|
|
42
|
+
CREATE INDEX v_ropidgtfs_shapes_for_mvt_geom_idx
|
|
43
|
+
ON v_ropidgtfs_shapes_for_mvt USING gist (shape_geometry);
|
|
44
|
+
|
|
45
|
+
CREATE INDEX v_ropidgtfs_shapes_for_mvt_route_type_idx
|
|
46
|
+
ON v_ropidgtfs_shapes_for_mvt (route_type);
|
|
47
|
+
|
|
48
|
+
CREATE INDEX v_ropidgtfs_shapes_for_mvt_route_short_name_idx
|
|
49
|
+
ON v_ropidgtfs_shapes_for_mvt (route_short_name);
|
|
50
|
+
end
|
|
51
|
+
$procedure$;
|
|
@@ -9,11 +9,12 @@ export declare class RopidGtfsRepository {
|
|
|
9
9
|
private cleaningOldProcedure;
|
|
10
10
|
private replaceAllProcedure;
|
|
11
11
|
private createPrecomputedTmpTablesProcedure;
|
|
12
|
+
private recreateShapesForMvtViewProcedure;
|
|
12
13
|
constructor(connector: IDatabaseConnector, logger: ILogger);
|
|
13
14
|
replaceAllTable(tables: string[], t: Transaction): Promise<void>;
|
|
14
15
|
createTmpTables(): Promise<void>;
|
|
15
16
|
createPrecomputedTmpTables(): Promise<void>;
|
|
16
17
|
cleanTmpAndOldTables(): Promise<void>;
|
|
17
18
|
cleanOldTables(): Promise<void>;
|
|
18
|
-
|
|
19
|
+
recreateShapesForMvtView(): Promise<void>;
|
|
19
20
|
}
|
|
@@ -26,6 +26,7 @@ let RopidGtfsRepository = class RopidGtfsRepository {
|
|
|
26
26
|
this.cleaningOldProcedure = "ropidgtfs_cleanOldTables";
|
|
27
27
|
this.replaceAllProcedure = "ropidgtfs_replaceAllSavedTables";
|
|
28
28
|
this.createPrecomputedTmpTablesProcedure = "ropidgtfs_preparePrecomputedTmpTables";
|
|
29
|
+
this.recreateShapesForMvtViewProcedure = "ropidgtfs_recreateShapesForMvtView";
|
|
29
30
|
}
|
|
30
31
|
async replaceAllTable(tables, t) {
|
|
31
32
|
this.logger.info(`Replacing tmp for actual tables: ${tables.join(", ")}`);
|
|
@@ -66,15 +67,12 @@ let RopidGtfsRepository = class RopidGtfsRepository {
|
|
|
66
67
|
this.logger.error(new golemio_errors_1.GeneralError("Error while cleaning old tables", this.constructor.name, err));
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
|
-
async
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
catch (err) {
|
|
76
|
-
this.logger.error(new golemio_errors_1.GeneralError("Error while refreshing shapes for mvt view", this.constructor.name, err));
|
|
77
|
-
}
|
|
70
|
+
async recreateShapesForMvtView() {
|
|
71
|
+
// The precomputed departures swap drops the dependent materialized view via CASCADE,
|
|
72
|
+
// so the view must be recreated, not just refreshed.
|
|
73
|
+
this.logger.info(`Recreating shapes for mvt view`);
|
|
74
|
+
const connection = this.connector.getConnection();
|
|
75
|
+
await connection.query(`CALL ${const_1.PG_SCHEMA}.${this.recreateShapesForMvtViewProcedure}();`);
|
|
78
76
|
}
|
|
79
77
|
};
|
|
80
78
|
exports.RopidGtfsRepository = RopidGtfsRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RopidGtfsRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/data-access/RopidGtfsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAAuC;AAEvC,wEAAqE;AAErE,6EAAwE;AAExE,iEAAwE;AAGjE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;
|
|
1
|
+
{"version":3,"file":"RopidGtfsRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/data-access/RopidGtfsRepository.ts"],"names":[],"mappings":"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"}
|
package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPrecomputedTablesTask.js
CHANGED
|
@@ -59,7 +59,7 @@ let RefreshPrecomputedTablesTask = class RefreshPrecomputedTablesTask extends wo
|
|
|
59
59
|
await this.ropidGtfsRepository.cleanOldTables();
|
|
60
60
|
}
|
|
61
61
|
await this.dataCacheManager.cleanCache();
|
|
62
|
-
await this.ropidGtfsRepository.
|
|
62
|
+
await this.ropidGtfsRepository.recreateShapesForMvtView();
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
exports.RefreshPrecomputedTablesTask = RefreshPrecomputedTablesTask;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RefreshPrecomputedTablesTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPrecomputedTablesTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8DAAiE;AACjE,kFAAqF;AACrF,wEAA2E;AAC3E,kFAAqF;AACrF,kFAAqF;AAErF,wEAAqE;AAErE,2EAAkF;AAClF,6EAAwE;AACxE,iEAAwE;AACxE,4CAAqD;AACrD,+EAA4E;AAGrE,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,2BAAiB;IAM/D,YACyD,mBAAyD,EACrD,sBAAgE,EACxE,eAAiD,EAC7D,iBAAsD,EACjE,MAAgC;QAE1D,KAAK,CAAC,iCAAqB,CAAC,CAAC;QANyC,wBAAmB,GAAnB,mBAAmB,CAAqB;QACpC,2BAAsB,GAAtB,sBAAsB,CAAyB;QACvD,oBAAe,GAAf,eAAe,CAAiB;QAC5C,sBAAiB,GAAjB,iBAAiB,CAAoB;QAChD,WAAM,GAAN,MAAM,CAAS;QAV9C,cAAS,GAAG,0BAA0B,CAAC;QACvC,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;QAEvC,qBAAgB,GAAqB,mCAAgB,CAAC,WAAW,EAAE,CAAC;IAUrF,CAAC;IAES,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,sBAAsB,CAAC,qCAAqC,CAAC,6CAAqB,CAAC,MAAM,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,IAAI,6BAAY,CAAC,mDAAmD,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvG,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;QAEnD,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAE7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,IAAI,6BAAY,CAAC,oDAAoD,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxG,CAAC;gBAAS,CAAC;YACP,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"RefreshPrecomputedTablesTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshPrecomputedTablesTask.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8DAAiE;AACjE,kFAAqF;AACrF,wEAA2E;AAC3E,kFAAqF;AACrF,kFAAqF;AAErF,wEAAqE;AAErE,2EAAkF;AAClF,6EAAwE;AACxE,iEAAwE;AACxE,4CAAqD;AACrD,+EAA4E;AAGrE,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,2BAAiB;IAM/D,YACyD,mBAAyD,EACrD,sBAAgE,EACxE,eAAiD,EAC7D,iBAAsD,EACjE,MAAgC;QAE1D,KAAK,CAAC,iCAAqB,CAAC,CAAC;QANyC,wBAAmB,GAAnB,mBAAmB,CAAqB;QACpC,2BAAsB,GAAtB,sBAAsB,CAAyB;QACvD,oBAAe,GAAf,eAAe,CAAiB;QAC5C,sBAAiB,GAAjB,iBAAiB,CAAoB;QAChD,WAAM,GAAN,MAAM,CAAS;QAV9C,cAAS,GAAG,0BAA0B,CAAC;QACvC,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;QAEvC,qBAAgB,GAAqB,mCAAgB,CAAC,WAAW,EAAE,CAAC;IAUrF,CAAC;IAES,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,sBAAsB,CAAC,qCAAqC,CAAC,6CAAqB,CAAC,MAAM,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,IAAI,6BAAY,CAAC,mDAAmD,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvG,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;QAEnD,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;YAE7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,IAAI,6BAAY,CAAC,oDAAoD,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxG,CAAC;gBAAS,CAAC;YACP,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,CAAC;IAC9D,CAAC;CACJ,CAAA;AA1CY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,qBAAU,GAAE;IAQJ,WAAA,IAAA,iBAAM,EAAC,iDAAuB,CAAC,mBAAmB,CAAC,CAAA;IACnD,WAAA,IAAA,iBAAM,EAAC,iDAAuB,CAAC,uBAAuB,CAAC,CAAA;IACvD,WAAA,IAAA,iBAAM,EAAC,iDAAuB,CAAC,eAAe,CAAC,CAAA;IAC/C,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,iBAAiB,CAAC,CAAA;IACnC,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;qCAJkE,yCAAmB;QACZ,iDAAuB;QACtC,iCAAe;GAT7F,4BAA4B,CA0CxC"}
|