@xuda.io/xuda-dbs-plugin-xuda 1.0.79 → 1.0.81

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 (2) hide show
  1. package/package.json +1 -1
  2. package/server.js +55 -71
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/xuda-dbs-plugin-xuda",
3
- "version": "1.0.79",
3
+ "version": "1.0.81",
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
@@ -57,7 +57,7 @@ const check_unique = async function (e, docP, table_obj, db, app_id_reference) {
57
57
  "check_unique",
58
58
  valSegment,
59
59
  _fieldType,
60
- val.keyValue[keySegment]
60
+ val.keyValue[Number(keySegment)]
61
61
  );
62
62
  keyValue.push(_val);
63
63
  }
@@ -195,10 +195,10 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
195
195
  const raw_data = async function () {
196
196
  var rows = [];
197
197
 
198
- for await (var val of body.docs) {
198
+ for (var val of body.docs) {
199
199
  var data = {};
200
200
  if (e.fields) {
201
- for await (const [key2, val2] of Object.entries(
201
+ for (const [key2, val2] of Object.entries(
202
202
  typeof e.fields === "string" ? e.fields.split(",") : e.fields
203
203
  )) {
204
204
  if (val.udfData) {
@@ -208,9 +208,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
208
208
  }
209
209
  }
210
210
  } else {
211
- for await (const [key2, val2] of Object.entries(
212
- table_obj.tableFields
213
- )) {
211
+ for (const [key2, val2] of Object.entries(table_obj.tableFields)) {
214
212
  if (val.udfData) {
215
213
  data[val2.data.field_id] =
216
214
  val["udfData"]["data"][val2.data.field_id];
@@ -223,11 +221,6 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
223
221
  rows.push({
224
222
  id: val._id,
225
223
  value: data,
226
- // value: {
227
- // udfData: { data: data },
228
- // _id: val._id,
229
- // _rev: val._rev,
230
- // },
231
224
  });
232
225
  }
233
226
 
@@ -245,7 +238,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
245
238
  var index_keys = table_index.data.keys;
246
239
  var index_id = e.indexId;
247
240
 
248
- for await (var val of body.docs) {
241
+ for (var val of body.docs) {
249
242
  var data = {};
250
243
  const _tableFieldsObj = find_item_by_key(
251
244
  table_obj.tableFields,
@@ -253,24 +246,20 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
253
246
  e.field_id
254
247
  );
255
248
 
256
- for await (const [key2, val2] of Object.entries(
257
- table_obj.tableFields
258
- )) {
249
+ for (const [key2, val2] of Object.entries(table_obj.tableFields)) {
259
250
  data[val2.data.field_id] =
260
251
  val["udfData"]["data"][val2.data.field_id];
261
252
  }
262
253
 
263
254
  var key_arr = [];
264
255
 
265
- for await (const [key_idx, key_name] of Object.entries(
266
- index_keys
267
- )) {
256
+ for (const [key_idx, key_name] of Object.entries(index_keys)) {
268
257
  key_arr.push(data[key_name]);
269
258
  }
270
259
  keys_obj[key_arr]++;
271
260
  }
272
261
 
273
- for await (const [key_arr, key_count] of Object.entries(keys_obj)) {
262
+ for (const [key_arr, key_count] of Object.entries(keys_obj)) {
274
263
  rows.push({
275
264
  key: [e.key, index_id, key_arr],
276
265
  value: body.docs.length,
@@ -300,7 +289,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
300
289
  var totals_sums = {};
301
290
  var totals_group_obj = {};
302
291
 
303
- for await (const [key, val] of Object.entries(total_fields_info)) {
292
+ for (const [key, val] of Object.entries(total_fields_info)) {
304
293
  totals_counts[val.field_id] = 0;
305
294
  totals_prop[val.field_id] = val;
306
295
  totals_arr[val.field_id] = [];
@@ -308,10 +297,8 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
308
297
  totals_group_obj[val.field_id] = {};
309
298
  }
310
299
 
311
- for await (var row_data of body.docs) {
312
- for await (const [key, val] of Object.entries(
313
- row_data.udfData.data
314
- )) {
300
+ for (var row_data of body.docs) {
301
+ for (const [key, val] of Object.entries(row_data.udfData.data)) {
315
302
  var field_id = key;
316
303
  var value = val;
317
304
  totals_counts[field_id]++;
@@ -386,7 +373,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
386
373
  }
387
374
  return { code: 1, data: totals_obj };
388
375
  };
389
- if (e.count === "true" || e.count === true) {
376
+ if (e.count) {
390
377
  return count_data();
391
378
  }
392
379
  if (e.total_fields_info) {
@@ -408,13 +395,13 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
408
395
 
409
396
  var fields = [];
410
397
  if (e.fields) {
411
- for await (const [key, val] of Object.entries(
398
+ for (const [key, val] of Object.entries(
412
399
  typeof e.fields === "string" ? e.fields.split(",") : e.fields
413
400
  )) {
414
401
  fields.push(val);
415
402
  }
416
403
  } else {
417
- for await (const [key, val] of Object.entries(table_obj.tableFields)) {
404
+ for (const [key, val] of Object.entries(table_obj.tableFields)) {
418
405
  fields.push(val.data.field_id);
419
406
  }
420
407
  }
@@ -423,7 +410,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
423
410
  var from = e.filter_from ? JSON.parse(e.filter_from) : {};
424
411
  var to = e.filter_to ? JSON.parse(e.filter_to) : {};
425
412
  var sort = [];
426
- for await (const [key, val] of Object.entries(from)) {
413
+ for (const [key, val] of Object.entries(from)) {
427
414
  var field_name = key;
428
415
 
429
416
  sort.push(field_name);
@@ -435,7 +422,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
435
422
  }
436
423
  }
437
424
 
438
- for await (const [key, val] of Object.entries(to)) {
425
+ for (const [key, val] of Object.entries(to)) {
439
426
  var field_name = key;
440
427
 
441
428
  if (val !== from[key]) {
@@ -463,7 +450,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
463
450
  if (e.sort_fields && JSON.parse(e.sort_fields).length) {
464
451
  opt.sort = JSON.parse(e.sort_fields);
465
452
  if (opt.sort) {
466
- for await (const [key, val] of Object.entries(opt.sort)) {
453
+ for (const [key, val] of Object.entries(opt.sort)) {
467
454
  var field_name = val.colId;
468
455
  opt.sort[key] = {
469
456
  ["udfData.data." + field_name]: val.sort,
@@ -473,9 +460,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
473
460
  }
474
461
 
475
462
  if (e.grid_filter_info) {
476
- for await (const [key, val] of Object.entries(
477
- JSON.parse(e.grid_filter_info)
478
- )) {
463
+ for (const [key, val] of Object.entries(JSON.parse(e.grid_filter_info))) {
479
464
  var field_name = key;
480
465
  var condition = "$and";
481
466
  const make_selector = function (val) {
@@ -660,7 +645,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
660
645
 
661
646
  if (e.total_fields_info) {
662
647
  fields = [];
663
- for await (const [key, val] of Object.entries(
648
+ for (const [key, val] of Object.entries(
664
649
  JSON.parse(e.total_fields_info)
665
650
  )) {
666
651
  var field_name = val.field_id;
@@ -671,13 +656,13 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
671
656
  }
672
657
  // fix names
673
658
 
674
- for await (const [key, val] of Object.entries(opt.fields)) {
659
+ for (const [key, val] of Object.entries(opt.fields)) {
675
660
  opt.fields[key] = "udfData.data." + val;
676
661
  }
677
662
  if (!e.sort_fields || !JSON.parse(e.sort_fields).length) {
678
663
  // added 2021 09 10
679
664
  if (opt.sort) {
680
- for await (const [key, val] of Object.entries(opt.sort)) {
665
+ for (const [key, val] of Object.entries(opt.sort)) {
681
666
  opt.sort[key] = {
682
667
  ["udfData.data." + val]: e.sortOrder === "des" ? "desc" : "asc",
683
668
  };
@@ -687,12 +672,12 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
687
672
 
688
673
  var selector_new = {};
689
674
 
690
- for await (const [key, val] of Object.entries(opt.selector)) {
675
+ for (const [key, val] of Object.entries(opt.selector)) {
691
676
  selector_new["udfData.data." + key] = val;
692
677
  }
693
678
 
694
679
  if (e.viewDbQuery) {
695
- for await (const [key, val] of Object.entries(table_obj.tableFields)) {
680
+ for (const [key, val] of Object.entries(table_obj.tableFields)) {
696
681
  if (e.viewDbQuery.includes(val.id)) {
697
682
  const replacer = new RegExp(val.id, "g");
698
683
  e.viewDbQuery = e.viewDbQuery.replace(
@@ -704,7 +689,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
704
689
 
705
690
  let viewDbQuery = JSON.parse(e.viewDbQuery.replace(/\\/g, ""));
706
691
 
707
- for await (const [key, val] of Object.entries(viewDbQuery)) {
692
+ for (const [key, val] of Object.entries(viewDbQuery)) {
708
693
  selector_new[key] = val;
709
694
  }
710
695
  }
@@ -718,29 +703,9 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
718
703
 
719
704
  // xuda
720
705
 
721
- // var cache_string = JSON.stringify(opt);
722
-
723
- // if (__.CACHE_QUERY_REQ?.[app_id_reference]?.[e.table_id]?.[cache_string]) {
724
- // return await done(
725
- // __.CACHE_QUERY_REQ[app_id_reference][e.table_id][cache_string].doc
726
- // );
727
- // }
728
-
729
706
  try {
730
707
  try {
731
708
  const doc = await db.find(opt);
732
- // if (!__.CACHE_QUERY_REQ[app_id_reference]) {
733
- // __.CACHE_QUERY_REQ[app_id_reference] = {};
734
- // }
735
-
736
- // if (!__.CACHE_QUERY_REQ[app_id_reference][e.table_id]) {
737
- // __.CACHE_QUERY_REQ[app_id_reference][e.table_id] = {};
738
- // }
739
-
740
- // __.CACHE_QUERY_REQ[app_id_reference][e.table_id][cache_string] = {
741
- // doc: doc,
742
- // ts: Date.now(),
743
- // };
744
709
 
745
710
  if (doc?.warning?.includes("No matching index found")) {
746
711
  const index_name = `index_${e.table_id}_${new Date()
@@ -748,7 +713,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
748
713
  .toString()}`;
749
714
  var index = [];
750
715
 
751
- for await (const [key, val] of Object.entries(opt.selector)) {
716
+ for (const [key, val] of Object.entries(opt.selector)) {
752
717
  index.push(key);
753
718
  }
754
719
  mango_index_obj = {
@@ -782,15 +747,15 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
782
747
 
783
748
  const doc = await db.find(opt);
784
749
  return await done(doc);
785
- } catch (error) {
786
- return { code: -1, data: error };
750
+ } catch (err) {
751
+ return { code: -1, data: err.message };
787
752
  }
788
753
  } else {
789
754
  return { code: -1, data: err.message };
790
755
  }
791
756
  }
792
757
  } catch (err) {
793
- return { code: -1, data: err.error };
758
+ return { code: -1, data: err.message };
794
759
  }
795
760
  };
796
761
 
@@ -806,8 +771,6 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
806
771
  skip = e.skipP;
807
772
  }
808
773
 
809
- var desc = e.desc === "true" ? true : false;
810
-
811
774
  var opt = undefined;
812
775
  if (key) {
813
776
  opt = {
@@ -817,7 +780,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
817
780
  skip: skip,
818
781
  };
819
782
  } else {
820
- if (e.reduce == "true") {
783
+ if (e.reduce) {
821
784
  opt = {
822
785
  startkey: e.startkey ? JSON.parse(e.startkey) : "",
823
786
  endkey: e.endkey ? JSON.parse(e.endkey) : "",
@@ -825,7 +788,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
825
788
  reduce: true,
826
789
  group_level: 3,
827
790
 
828
- descending: desc,
791
+ descending: e.desc,
829
792
  };
830
793
  } else {
831
794
  opt = {
@@ -834,7 +797,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
834
797
  include_docs: !e.ids,
835
798
  limit: limit,
836
799
  skip: skip,
837
- descending: desc,
800
+ descending: e.desc,
838
801
  };
839
802
  }
840
803
  }
@@ -855,7 +818,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
855
818
 
856
819
  var obj = {};
857
820
  for await (const [arr_key, arr_val] of Object.entries(arr)) {
858
- let field_id = table_index.data.keys[arr_key];
821
+ let field_id = table_index.data.keys[Number(arr_key)];
859
822
 
860
823
  const _tableFieldsObj = find_item_by_key(
861
824
  table_obj.tableFields,
@@ -918,11 +881,26 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
918
881
  // );}
919
882
 
920
883
  return { code: 1, data: { rows: rows, total_rows: rows.length } };
921
- } catch (error) {
922
- return { code: -1, data: error };
884
+ } catch (err) {
885
+ return { code: -1, data: err.message };
923
886
  }
924
887
  };
925
888
 
889
+ const count_tables = async function () {
890
+ var opt = {
891
+ reduce: true,
892
+ group_level: 1,
893
+ };
894
+
895
+ if (e.table_id) {
896
+ opt.key = e.table_id;
897
+ }
898
+
899
+ const body = await db.view(`xuda`, "db_table_counts", opt);
900
+
901
+ return { code: 1, data: body };
902
+ };
903
+
926
904
  if (e.reduce && JSON.parse(e.reduce)) {
927
905
  view = "db_index_reduce";
928
906
  return await runtime_get_query_data();
@@ -932,6 +910,12 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
932
910
  view = e.view;
933
911
  return await runtime_get_query_data();
934
912
  }
913
+
914
+ if (e.count && !e.filter_from) {
915
+ // count tables
916
+ return await count_tables();
917
+ }
918
+
935
919
  return await runtime_get_mango_data();
936
920
  };
937
921