@xuda.io/xuda-dbs-plugin-xuda 1.0.124 → 1.0.126

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.
Files changed (3) hide show
  1. package/package.json +1 -1
  2. package/server.js +34 -10
  3. package/studio.mjs +103 -89
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/xuda-dbs-plugin-xuda",
3
- "version": "1.0.124",
3
+ "version": "1.0.126",
4
4
  "description": "Xuda Database Socket for Xuda's proprietary structure powered by CouchDB",
5
5
  "scripts": {
6
6
  "pub": "npm version patch --force && npm publish --access public"
package/server.js CHANGED
@@ -1,7 +1,13 @@
1
1
  const _ = require("lodash");
2
2
  const crypto = require("node:crypto");
3
3
 
4
- const check_unique = async function (e, docP, table_obj, db, app_id_reference) {
4
+ exports.check_unique = async function (
5
+ e,
6
+ docP,
7
+ table_obj,
8
+ db,
9
+ app_id_reference
10
+ ) {
5
11
  var len = docP.udfIndex.length;
6
12
  if (!len) {
7
13
  return { code: -11, data: "table must have primary index" };
@@ -1306,14 +1312,20 @@ exports.create = async (params, setup_doc, resolve, reject) => {
1306
1312
  error: {},
1307
1313
  },
1308
1314
 
1309
- ts: new Date().valueOf(),
1310
- date: new Date().valueOf(),
1315
+ ts: Date.now(),
1316
+ date: Date.now(),
1311
1317
  };
1312
1318
  const index_ret = await get_index_json(doc, table_obj);
1313
1319
  if (index_ret < 0) throw index_ret.data;
1314
1320
  doc.udfIndex = index_ret.data;
1315
1321
 
1316
- const ret = await check_unique(e, doc, table_obj, db, app_id_reference);
1322
+ const ret = await module.exports.check_unique(
1323
+ e,
1324
+ doc,
1325
+ table_obj,
1326
+ db,
1327
+ app_id_reference
1328
+ );
1317
1329
  if (ret.code < 0) {
1318
1330
  throw ret;
1319
1331
  }
@@ -1341,15 +1353,21 @@ exports.create = async (params, setup_doc, resolve, reject) => {
1341
1353
  error: {},
1342
1354
  },
1343
1355
 
1344
- ts: new Date().valueOf(),
1345
- date: new Date().valueOf(),
1356
+ ts: Date.now(),
1357
+ date: Date.now(),
1346
1358
  };
1347
1359
  const index_ret = await get_index_json(doc, table_obj);
1348
1360
  if (index_ret.code < 0) {
1349
1361
  return index_ret;
1350
1362
  }
1351
1363
  doc.udfIndex = index_ret.data;
1352
- const ret = await check_unique(e, doc, table_obj, db, app_id_reference);
1364
+ const ret = await module.exports.check_unique(
1365
+ e,
1366
+ doc,
1367
+ table_obj,
1368
+ db,
1369
+ app_id_reference
1370
+ );
1353
1371
  if (ret.code < 0) {
1354
1372
  return reject(ret.data);
1355
1373
  }
@@ -1445,7 +1463,13 @@ exports.update = async (params, setup_doc, resolve, reject) => {
1445
1463
  return index_ret;
1446
1464
  }
1447
1465
  doc.udfIndex = index_ret.data;
1448
- const ret = await check_unique(e, doc, table_obj, db, app_id_reference);
1466
+ const ret = await module.exports.check_unique(
1467
+ e,
1468
+ doc,
1469
+ table_obj,
1470
+ db,
1471
+ app_id_reference
1472
+ );
1449
1473
  if (ret.code < 0) {
1450
1474
  return ret;
1451
1475
  }
@@ -1479,7 +1503,7 @@ exports.delete = async (params, setup_doc, resolve, reject) => {
1479
1503
  });
1480
1504
  } else {
1481
1505
  doc.stat = 4;
1482
- doc.ts = new Date().valueOf();
1506
+ doc.ts = Date.now();
1483
1507
  docs_to_delete.push(doc);
1484
1508
  }
1485
1509
  }
@@ -1505,7 +1529,7 @@ exports.restore = async (params, setup_doc, resolve, reject) => {
1505
1529
 
1506
1530
  if (doc && doc._id) {
1507
1531
  doc.stat = 3;
1508
- doc.ts = new Date().valueOf();
1532
+ doc.ts = Date.now();
1509
1533
  docs_to_restore.push(doc);
1510
1534
  }
1511
1535
  }
package/studio.mjs CHANGED
@@ -1,104 +1,118 @@
1
1
  var _this = {};
2
2
 
3
- export const check_unique = async function (e, docP, table_obj, db) {
4
- var len = docP.udfIndex.length;
5
- if (!len) {
6
- return { code: -11, data: "table must have primary index" };
3
+ const check_unique = async function (e, docP, table_obj, db) {
4
+ if (typeof func !== "undefined") {
5
+ const SESSION_ID = Object.keys(SESSION_OBJ)[0];
6
+ const ret = await func.common.perform_rpi_request(
7
+ SESSION_ID,
8
+ serviceP,
9
+ {},
10
+ docP
11
+ );
12
+ return ret``;
7
13
  }
8
- var found_unique = undefined;
9
- var ret = { code: 1, data: "ok" };
10
-
11
- for await (var val of docP.udfIndex) {
12
- if (!table_obj.tableIndexes) {
13
- ret = {
14
- code: -14,
15
- data: "table definition missing for: " + val.fileId,
16
- };
17
- break;
14
+
15
+ const local = async function () {
16
+ var len = docP.udfIndex.length;
17
+ if (!len) {
18
+ return { code: -11, data: "table must have primary index" };
18
19
  }
20
+ var found_unique = undefined;
21
+ var ret = { code: 1, data: "ok" };
22
+
23
+ for await (var val of docP.udfIndex) {
24
+ if (!table_obj.tableIndexes) {
25
+ ret = {
26
+ code: -14,
27
+ data: "table definition missing for: " + val.fileId,
28
+ };
29
+ break;
30
+ }
19
31
 
20
- const table_index = find_item_by_key_root(
21
- table_obj.tableIndexes,
22
- "id",
23
- val.indexId
24
- );
32
+ const table_index = find_item_by_key_root(
33
+ table_obj.tableIndexes,
34
+ "id",
35
+ val.indexId
36
+ );
25
37
 
26
- if (!table_index) {
27
- ret = {
28
- code: -13,
29
- data: "keys definition missing for Table: " + val.fileId,
30
- };
31
- break;
32
- }
38
+ if (!table_index) {
39
+ ret = {
40
+ code: -13,
41
+ data: "keys definition missing for Table: " + val.fileId,
42
+ };
43
+ break;
44
+ }
33
45
 
34
- if (!table_index.data.unique) {
35
- continue;
36
- }
37
- if (!table_index?.data?.keys || _.isEmpty(table_index.data.keys)) {
38
- ret = {
39
- code: -14,
40
- data: "keys definition missing for index: " + val.indexId,
41
- };
42
- break;
43
- }
46
+ if (!table_index.data.unique) {
47
+ continue;
48
+ }
49
+ if (!table_index?.data?.keys || _.isEmpty(table_index.data.keys)) {
50
+ ret = {
51
+ code: -14,
52
+ data: "keys definition missing for index: " + val.indexId,
53
+ };
54
+ break;
55
+ }
44
56
 
45
- var keysArr = table_index.data.keys;
46
- var keyValue = [];
57
+ var keysArr = table_index.data.keys;
58
+ var keyValue = [];
47
59
 
48
- for await (const [keySegment, valSegment] of Object.entries(keysArr)) {
49
- // run on key segment
50
- let _fieldType = find_item_by_key(
51
- table_obj.tableFields,
52
- "field_id",
53
- valSegment
54
- ).props.fieldType;
55
- let _val = await get_cast_val(
56
- "check_unique",
57
- valSegment,
58
- _fieldType,
59
- val.keyValue[Number(keySegment)]
60
- );
61
- keyValue.push(_val);
62
- }
60
+ for await (const [keySegment, valSegment] of Object.entries(keysArr)) {
61
+ // run on key segment
62
+ let _fieldType = find_item_by_key(
63
+ table_obj.tableFields,
64
+ "field_id",
65
+ valSegment
66
+ ).props.fieldType;
67
+ let _val = await get_cast_val(
68
+ "check_unique",
69
+ valSegment,
70
+ _fieldType,
71
+ val.keyValue[Number(keySegment)]
72
+ );
73
+ keyValue.push(_val);
74
+ }
63
75
 
64
- var key =
65
- '["' +
66
- val.fileId +
67
- '","' +
68
- val.indexId +
69
- '",[' +
70
- keyValue.join(",") +
71
- "]]";
72
- try {
73
- e.view = "db_index";
74
- const ret = await query_db(e, db, table_obj);
75
- const json = ret.data;
76
-
77
- // var data;
78
-
79
- if (json.code > 0) {
80
- var data = json.data;
81
- if (data?.rows?.length) {
82
- for await (var val of data.rows) {
83
- if (val.id !== docP._id) {
84
- found_unique = true;
76
+ var key =
77
+ '["' +
78
+ val.fileId +
79
+ '","' +
80
+ val.indexId +
81
+ '",[' +
82
+ keyValue.join(",") +
83
+ "]]";
84
+ try {
85
+ e.view = "db_index";
86
+ const ret = await query_db(e, db, table_obj);
87
+ const json = ret.data;
88
+
89
+ // var data;
90
+
91
+ if (json.code > 0) {
92
+ var data = json.data;
93
+ if (data?.rows?.length) {
94
+ for await (var val of data.rows) {
95
+ if (val.id !== docP._id) {
96
+ found_unique = true;
97
+ }
98
+ }
99
+ if (found_unique) {
100
+ throw "error checking unique:" + key;
85
101
  }
86
- }
87
- if (found_unique) {
88
- throw "error checking unique:" + key;
89
102
  }
90
103
  }
104
+ // throw json.data;
105
+ return { code: 1, data: "ok" };
106
+ } catch (msg) {
107
+ console.error(msg);
108
+ ret = { code: -22, data: msg };
109
+ break;
91
110
  }
92
- // throw json.data;
93
- return { code: 1, data: "ok" };
94
- } catch (msg) {
95
- console.error(msg);
96
- ret = { code: -22, data: msg };
97
- break;
98
111
  }
99
- }
100
112
 
101
- return ret;
113
+ return ret;
114
+ };
115
+ return await local();
102
116
  };
103
117
 
104
118
  const get_index_json = async function (docInP, table_obj) {
@@ -1323,8 +1337,8 @@ export const create = async (params, resolve, reject) => {
1323
1337
  error: {},
1324
1338
  },
1325
1339
 
1326
- ts: new Date().valueOf(),
1327
- date: new Date().valueOf(),
1340
+ ts: Date.now(),
1341
+ date: Date.now(),
1328
1342
  };
1329
1343
  const index_ret = await get_index_json(doc, table_obj);
1330
1344
  if (index_ret.code < 0) {
@@ -1461,7 +1475,7 @@ export const del = async (params, resolve, reject) => {
1461
1475
  });
1462
1476
  } else {
1463
1477
  doc.stat = 4;
1464
- doc.ts = new Date().valueOf();
1478
+ doc.ts = Date.now();
1465
1479
  docs_to_delete.push(doc);
1466
1480
  }
1467
1481
  }
@@ -1485,7 +1499,7 @@ export const restore = async (params, resolve, reject) => {
1485
1499
 
1486
1500
  if (doc && doc._id) {
1487
1501
  doc.stat = 3;
1488
- doc.ts = new Date().valueOf();
1502
+ doc.ts = Date.now();
1489
1503
  docs_to_restore.push(doc);
1490
1504
  }
1491
1505
  }