@openforis/arena-server 2.5.1 → 2.5.3

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,6 @@
1
+ export function setup(options: any, seedLink: any): void;
2
+ export function up(db: any): any;
3
+ export function down(db: any): any;
4
+ export namespace _meta {
5
+ let version: number;
6
+ }
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+ var dbm;
3
+ var type;
4
+ var seed;
5
+ var fs = require('fs');
6
+ var path = require('path');
7
+ var Promise;
8
+ exports.setup = function (options, seedLink) {
9
+ dbm = options.dbmigrate;
10
+ type = dbm.dataType;
11
+ seed = seedLink;
12
+ Promise = options.Promise;
13
+ };
14
+ exports.up = function (db) {
15
+ var filePath = path.join(__dirname, 'sqls', '20261004100000-alter-table-node-value-indexes-partial-up.sql');
16
+ return new Promise(function (resolve, reject) {
17
+ fs.readFile(filePath, { encoding: 'utf-8' }, function (err, data) {
18
+ if (err)
19
+ return reject(err);
20
+ console.log('received data: ' + data);
21
+ resolve(data);
22
+ });
23
+ }).then(function (data) {
24
+ return db.runSql(data);
25
+ });
26
+ };
27
+ exports.down = function (db) {
28
+ var filePath = path.join(__dirname, 'sqls', '20261004100000-alter-table-node-value-indexes-partial-down.sql');
29
+ return new Promise(function (resolve, reject) {
30
+ fs.readFile(filePath, { encoding: 'utf-8' }, function (err, data) {
31
+ if (err)
32
+ return reject(err);
33
+ console.log('received data: ' + data);
34
+ resolve(data);
35
+ });
36
+ }).then(function (data) {
37
+ return db.runSql(data);
38
+ });
39
+ };
40
+ exports._meta = {
41
+ version: 1,
42
+ };
43
+ //# sourceMappingURL=20261004100000-alter-table-node-value-indexes-partial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20261004100000-alter-table-node-value-indexes-partial.js","sourceRoot":"","sources":["../../../../../../src/db/dbMigrator/migration/survey/migrations/20261004100000-alter-table-node-value-indexes-partial.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,IAAI,GAAG,CAAA;AACP,IAAI,IAAI,CAAA;AACR,IAAI,IAAI,CAAA;AACR,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AACtB,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC1B,IAAI,OAAO,CAAA;AAMX,OAAO,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE,QAAQ;IACzC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAA;IACvB,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAA;IACnB,IAAI,GAAG,QAAQ,CAAA;IACf,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AAC3B,CAAC,CAAA;AAED,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE;IACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,8DAA8D,CAAC,CAAA;IAC3G,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;QAC1C,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,EAAE,IAAI;YAC9D,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;YAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;YAErC,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI;QACpB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE;IACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,gEAAgE,CAAC,CAAA;IAC7G,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;QAC1C,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,EAAE,IAAI;YAC9D,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;YAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;YAErC,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI;QACpB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,OAAO,CAAC,KAAK,GAAG;IACd,OAAO,EAAE,CAAC;CACX,CAAA"}
@@ -0,0 +1,6 @@
1
+ export function setup(options: any, seedLink: any): void;
2
+ export function up(db: any): any;
3
+ export function down(db: any): any;
4
+ export namespace _meta {
5
+ let version: number;
6
+ }
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+ var dbm;
3
+ var type;
4
+ var seed;
5
+ var fs = require('fs');
6
+ var path = require('path');
7
+ var Promise;
8
+ exports.setup = function (options, seedLink) {
9
+ dbm = options.dbmigrate;
10
+ type = dbm.dataType;
11
+ seed = seedLink;
12
+ Promise = options.Promise;
13
+ };
14
+ exports.up = function (db) {
15
+ var filePath = path.join(__dirname, 'sqls', '20261004100100-update-node-meta-remove-empty-dictionaries-up.sql');
16
+ return new Promise(function (resolve, reject) {
17
+ fs.readFile(filePath, { encoding: 'utf-8' }, function (err, data) {
18
+ if (err)
19
+ return reject(err);
20
+ console.log('received data: ' + data);
21
+ resolve(data);
22
+ });
23
+ }).then(function (data) {
24
+ return db.runSql(data);
25
+ });
26
+ };
27
+ exports.down = function (db) {
28
+ var filePath = path.join(__dirname, 'sqls', '20261004100100-update-node-meta-remove-empty-dictionaries-down.sql');
29
+ return new Promise(function (resolve, reject) {
30
+ fs.readFile(filePath, { encoding: 'utf-8' }, function (err, data) {
31
+ if (err)
32
+ return reject(err);
33
+ console.log('received data: ' + data);
34
+ resolve(data);
35
+ });
36
+ }).then(function (data) {
37
+ return db.runSql(data);
38
+ });
39
+ };
40
+ exports._meta = {
41
+ version: 1,
42
+ };
43
+ //# sourceMappingURL=20261004100100-update-node-meta-remove-empty-dictionaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"20261004100100-update-node-meta-remove-empty-dictionaries.js","sourceRoot":"","sources":["../../../../../../src/db/dbMigrator/migration/survey/migrations/20261004100100-update-node-meta-remove-empty-dictionaries.js"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,IAAI,GAAG,CAAA;AACP,IAAI,IAAI,CAAA;AACR,IAAI,IAAI,CAAA;AACR,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AACtB,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC1B,IAAI,OAAO,CAAA;AAMX,OAAO,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE,QAAQ;IACzC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAA;IACvB,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAA;IACnB,IAAI,GAAG,QAAQ,CAAA;IACf,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AAC3B,CAAC,CAAA;AAED,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE;IACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,kEAAkE,CAAC,CAAA;IAC/G,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;QAC1C,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,EAAE,IAAI;YAC9D,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;YAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;YAErC,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI;QACpB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE;IACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,oEAAoE,CAAC,CAAA;IACjH,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;QAC1C,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,UAAU,GAAG,EAAE,IAAI;YAC9D,IAAI,GAAG;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;YAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;YAErC,OAAO,CAAC,IAAI,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI;QACpB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,OAAO,CAAC,KAAK,GAAG;IACd,OAAO,EAAE,CAAC;CACX,CAAA"}
@@ -0,0 +1,15 @@
1
+ DROP INDEX IF EXISTS node_item_uuid_idx;
2
+ CREATE INDEX node_item_uuid_idx
3
+ ON node USING btree (((value ->> 'itemUuid')::uuid));
4
+
5
+ DROP INDEX IF EXISTS node_taxon_uuid_idx;
6
+ CREATE INDEX node_taxon_uuid_idx
7
+ ON node USING btree (((value ->> 'taxonUuid')::uuid));
8
+
9
+ DROP INDEX IF EXISTS node_vernacular_name_uuid_idx;
10
+ CREATE INDEX node_vernacular_name_uuid_idx
11
+ ON node USING btree (((value ->> 'vernacularNameUuid')::uuid));
12
+
13
+ DROP INDEX IF EXISTS node_file_uuid_idx;
14
+ CREATE INDEX node_file_uuid_idx
15
+ ON node USING btree (((value ->> 'fileUuid')::uuid));
@@ -0,0 +1,24 @@
1
+ -- Recreate the node value indexes as partial indexes: a full expression index stores an entry
2
+ -- (NULL) also for every node without that value prop (most of the nodes).
3
+ -- Queries comparing the indexed expression with a strict operator (=, IN, ANY, join conditions)
4
+ -- imply the index predicate, so they can still use these indexes.
5
+
6
+ DROP INDEX IF EXISTS node_item_uuid_idx;
7
+ CREATE INDEX node_item_uuid_idx
8
+ ON node USING btree (((value ->> 'itemUuid')::uuid))
9
+ WHERE (value ->> 'itemUuid') IS NOT NULL;
10
+
11
+ DROP INDEX IF EXISTS node_taxon_uuid_idx;
12
+ CREATE INDEX node_taxon_uuid_idx
13
+ ON node USING btree (((value ->> 'taxonUuid')::uuid))
14
+ WHERE (value ->> 'taxonUuid') IS NOT NULL;
15
+
16
+ DROP INDEX IF EXISTS node_vernacular_name_uuid_idx;
17
+ CREATE INDEX node_vernacular_name_uuid_idx
18
+ ON node USING btree (((value ->> 'vernacularNameUuid')::uuid))
19
+ WHERE (value ->> 'vernacularNameUuid') IS NOT NULL;
20
+
21
+ DROP INDEX IF EXISTS node_file_uuid_idx;
22
+ CREATE INDEX node_file_uuid_idx
23
+ ON node USING btree (((value ->> 'fileUuid')::uuid))
24
+ WHERE (value ->> 'fileUuid') IS NOT NULL;
@@ -0,0 +1 @@
1
+ -- Nothing to restore: a missing dictionary in node meta is equivalent to an empty one.
@@ -0,0 +1,17 @@
1
+ -- Remove the empty dictionaries from node meta (e.g. "childApplicability": {}) to save space:
2
+ -- a missing dictionary is equivalent to an empty one (child applicable, editable, visible; no children count).
3
+ -- Note: the updated rows leave dead tuples behind; VACUUM makes their space reusable,
4
+ -- VACUUM FULL (or pg_repack) is needed to give it back to the operating system.
5
+
6
+ UPDATE node
7
+ SET meta = meta - ARRAY(
8
+ SELECT e.key
9
+ FROM jsonb_each(meta) AS e
10
+ WHERE e.key IN ('childApplicability', 'cEdit', 'cVis', 'childrenMaxCount', 'childrenMinCount')
11
+ AND e.value = '{}'::jsonb
12
+ )
13
+ WHERE meta -> 'childApplicability' = '{}'::jsonb
14
+ OR meta -> 'cEdit' = '{}'::jsonb
15
+ OR meta -> 'cVis' = '{}'::jsonb
16
+ OR meta -> 'childrenMaxCount' = '{}'::jsonb
17
+ OR meta -> 'childrenMinCount' = '{}'::jsonb;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "name": "OpenForis",
5
5
  "email": "openforis.arena@gmail.com"
6
6
  },
7
- "version": "2.5.1",
7
+ "version": "2.5.3",
8
8
  "description": "",
9
9
  "main": "dist/index.js",
10
10
  "types": "dist/index.d.ts",
@@ -46,7 +46,7 @@
46
46
  "dependencies": {
47
47
  "@aws-sdk/client-s3": "^3.1145.0",
48
48
  "@godaddy/terminus": "^4.12.1",
49
- "@openforis/arena-core": "^2.3.11",
49
+ "@openforis/arena-core": "^2.3.12",
50
50
  "bcryptjs": "^3.0.3",
51
51
  "compression": "^1.8.2",
52
52
  "cookie-parser": "^1.4.7",