@golemio/traffic-common 1.0.9 → 1.0.10-dev.1761116854

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.
@@ -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', '20250402144538-add-rsd-tmc-osm-mapping-pointer-table-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', '20250402144538-add-rsd-tmc-osm-mapping-pointer-table-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,37 @@
1
+ CREATE OR REPLACE PROCEDURE replace_with_tmp_table(IN tableName Text)
2
+ LANGUAGE plpgsql
3
+ SET search_path FROM CURRENT
4
+ AS $PROCEDURE$
5
+ DECLARE
6
+ tableNameOld Text;
7
+ tableNameTmp Text;
8
+ BEGIN
9
+ SELECT concat(tableName, '_old') INTO tableNameOld;
10
+ SELECT concat(tableName, '_tmp') INTO tableNameTmp;
11
+
12
+ EXECUTE format('LOCK %I IN EXCLUSIVE MODE', tableName);
13
+ EXECUTE format('ALTER TABLE %I RENAME TO %I', tableName, tableNameOld);
14
+ EXECUTE format('ALTER TABLE %I RENAME TO %I', tableNameTmp, tableName);
15
+ EXECUTE format('DROP TABLE %I', tableNameOld);
16
+ END;
17
+ $PROCEDURE$;
18
+
19
+ CREATE OR REPLACE PROCEDURE create_tmp_table(IN tableName Text, OUT tableNameTmp Text)
20
+ LANGUAGE plpgsql
21
+ SET search_path FROM CURRENT
22
+ AS $PROCEDURE$
23
+ BEGIN
24
+ SELECT concat(tableName, '_tmp') INTO tableNameTmp;
25
+ EXECUTE format('DROP TABLE IF EXISTS %I;', tableNameTmp);
26
+ EXECUTE format('CREATE TABLE %I (LIKE %I INCLUDING ALL);', tableNameTmp, tableName);
27
+ END;
28
+ $PROCEDURE$;
29
+
30
+ ALTER TABLE rsd_tmc_osm_mapping_actual NO INHERIT rsd_tmc_osm_mapping;
31
+ WITH moved_rows
32
+ AS (DELETE FROM rsd_tmc_osm_mapping_actual RETURNING *)
33
+ INSERT INTO rsd_tmc_osm_mapping SELECT * FROM moved_rows;
34
+ DROP TABLE rsd_tmc_osm_mapping_actual;
35
+ ALTER TABLE rsd_tmc_osm_mapping ADD CONSTRAINT rsd_tmc_osm_mapping_pkey PRIMARY KEY (lt_start, lt_end);
36
+
37
+ CREATE INDEX rsd_tmc_osm_mapping_idx ON rsd_tmc_osm_mapping USING btree (lt_start, lt_end);
@@ -0,0 +1,59 @@
1
+ -- Get rid of a redundant index
2
+ DROP INDEX IF EXISTS rsd_tmc_osm_mapping_idx;
3
+ DROP INDEX IF EXISTS rsd_tmc_osm_mapping_tmp_lt_start_lt_end_idx;
4
+ DROP INDEX IF EXISTS rsd_tmc_osm_mapping_tmp_lt_start_lt_end_idx1;
5
+
6
+ -- Create pointer table
7
+ CREATE TABLE rsd_tmc_osm_mapping_actual (LIKE rsd_tmc_osm_mapping);
8
+ ALTER TABLE rsd_tmc_osm_mapping DROP CONSTRAINT IF EXISTS rsd_tmc_osm_mapping_pkey;
9
+ ALTER TABLE rsd_tmc_osm_mapping DROP CONSTRAINT IF EXISTS rsd_tmc_osm_mapping_tmp_pkey;
10
+ ALTER TABLE rsd_tmc_osm_mapping DROP CONSTRAINT IF EXISTS rsd_tmc_osm_mapping_tmp_pkey1;
11
+ ALTER TABLE rsd_tmc_osm_mapping_actual ADD CONSTRAINT rsd_tmc_osm_mapping_pkey PRIMARY KEY (lt_start, lt_end);
12
+ WITH moved_rows
13
+ AS (DELETE FROM rsd_tmc_osm_mapping RETURNING *)
14
+ INSERT INTO rsd_tmc_osm_mapping_actual SELECT * FROM moved_rows;
15
+ ALTER TABLE rsd_tmc_osm_mapping_actual INHERIT rsd_tmc_osm_mapping;
16
+
17
+ -- Modify tmp table creation procedure to use the newly created pointer table
18
+ CREATE OR REPLACE PROCEDURE create_tmp_table(IN tableName Text, OUT tableNameTmp Text)
19
+ LANGUAGE plpgsql
20
+ SET search_path FROM CURRENT
21
+ AS $PROCEDURE$
22
+ DECLARE
23
+ tableNameActual Text;
24
+ BEGIN
25
+ SELECT concat(tableName, '_actual') INTO tableNameActual;
26
+ SELECT concat(tableName, '_tmp') INTO tableNameTmp;
27
+
28
+ EXECUTE format('DROP TABLE IF EXISTS %I;', tableNameTmp);
29
+ EXECUTE format('CREATE TABLE %I (LIKE %I INCLUDING ALL);', tableNameTmp, tableNameActual);
30
+ END;
31
+ $PROCEDURE$;
32
+
33
+ -- Modify hotswap procedure to use the newly created pointer table
34
+ CREATE OR REPLACE PROCEDURE replace_with_tmp_table(IN tableName Text)
35
+ LANGUAGE plpgsql
36
+ SET search_path FROM CURRENT
37
+ AS $procedure$
38
+ DECLARE
39
+ pkeyIdxNameActual Text;
40
+ pkeyIdxNameTmp Text;
41
+ tableNameActual Text;
42
+ tableNameTmp Text;
43
+ tableNameOld Text;
44
+ BEGIN
45
+ SELECT concat(tableName, '_actual') INTO tableNameActual;
46
+ SELECT concat(tableName, '_old') INTO tableNameOld;
47
+ SELECT concat(tableName, '_tmp') INTO tableNameTmp;
48
+ SELECT concat(tableNameActual, '_pkey') INTO pkeyIdxNameActual;
49
+ SELECT concat(tableNameTmp, '_pkey') INTO pkeyIdxNameTmp;
50
+
51
+ EXECUTE format('LOCK %I IN EXCLUSIVE MODE', tableName);
52
+ EXECUTE format('ALTER TABLE %I NO INHERIT %I', tableNameActual, tableName);
53
+ EXECUTE format('ALTER TABLE %I RENAME TO %I', tableNameActual, tableNameOld);
54
+ EXECUTE format('ALTER TABLE %I RENAME TO %I', tableNameTmp, tableNameActual);
55
+ EXECUTE format('ALTER INDEX %I RENAME TO %I', pkeyIdxNameTmp, pkeyIdxNameActual);
56
+ EXECUTE format('ALTER TABLE %I INHERIT %I', tableNameActual, tableName);
57
+ EXECUTE format('DROP TABLE %I', tableNameOld);
58
+ END;
59
+ $procedure$;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/traffic-common",
3
- "version": "1.0.9",
3
+ "version": "1.0.10-dev.1761116854",
4
4
  "description": "Golemio Common Traffic Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",