@xuda.io/xuda-dbs-plugin-xuda 1.0.78 → 1.0.80

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 +56 -754
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/xuda-dbs-plugin-xuda",
3
- "version": "1.0.78",
3
+ "version": "1.0.80",
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
  }
@@ -717,29 +702,10 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
717
702
  opt.fields.push("_rev");
718
703
 
719
704
  // xuda
720
- var cache_string = JSON.stringify(opt);
721
-
722
- if (__.CACHE_QUERY_REQ?.[app_id_reference]?.[e.table_id]?.[cache_string]) {
723
- return await done(
724
- __.CACHE_QUERY_REQ[app_id_reference][e.table_id][cache_string].doc
725
- );
726
- }
727
705
 
728
706
  try {
729
707
  try {
730
708
  const doc = await db.find(opt);
731
- if (!__.CACHE_QUERY_REQ[app_id_reference]) {
732
- __.CACHE_QUERY_REQ[app_id_reference] = {};
733
- }
734
-
735
- if (!__.CACHE_QUERY_REQ[app_id_reference][e.table_id]) {
736
- __.CACHE_QUERY_REQ[app_id_reference][e.table_id] = {};
737
- }
738
-
739
- __.CACHE_QUERY_REQ[app_id_reference][e.table_id][cache_string] = {
740
- doc: doc,
741
- ts: Date.now(),
742
- };
743
709
 
744
710
  if (doc?.warning?.includes("No matching index found")) {
745
711
  const index_name = `index_${e.table_id}_${new Date()
@@ -747,7 +713,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
747
713
  .toString()}`;
748
714
  var index = [];
749
715
 
750
- for await (const [key, val] of Object.entries(opt.selector)) {
716
+ for (const [key, val] of Object.entries(opt.selector)) {
751
717
  index.push(key);
752
718
  }
753
719
  mango_index_obj = {
@@ -781,15 +747,15 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
781
747
 
782
748
  const doc = await db.find(opt);
783
749
  return await done(doc);
784
- } catch (error) {
785
- return { code: -1, data: error };
750
+ } catch (err) {
751
+ return { code: -1, data: err.message };
786
752
  }
787
753
  } else {
788
754
  return { code: -1, data: err.message };
789
755
  }
790
756
  }
791
757
  } catch (err) {
792
- return { code: -1, data: err.error };
758
+ return { code: -1, data: err.message };
793
759
  }
794
760
  };
795
761
 
@@ -805,8 +771,6 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
805
771
  skip = e.skipP;
806
772
  }
807
773
 
808
- var desc = e.desc === "true" ? true : false;
809
-
810
774
  var opt = undefined;
811
775
  if (key) {
812
776
  opt = {
@@ -816,7 +780,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
816
780
  skip: skip,
817
781
  };
818
782
  } else {
819
- if (e.reduce == "true") {
783
+ if (e.reduce) {
820
784
  opt = {
821
785
  startkey: e.startkey ? JSON.parse(e.startkey) : "",
822
786
  endkey: e.endkey ? JSON.parse(e.endkey) : "",
@@ -824,7 +788,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
824
788
  reduce: true,
825
789
  group_level: 3,
826
790
 
827
- descending: desc,
791
+ descending: e.desc,
828
792
  };
829
793
  } else {
830
794
  opt = {
@@ -833,7 +797,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
833
797
  include_docs: !e.ids,
834
798
  limit: limit,
835
799
  skip: skip,
836
- descending: desc,
800
+ descending: e.desc,
837
801
  };
838
802
  }
839
803
  }
@@ -854,7 +818,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
854
818
 
855
819
  var obj = {};
856
820
  for await (const [arr_key, arr_val] of Object.entries(arr)) {
857
- let field_id = table_index.data.keys[arr_key];
821
+ let field_id = table_index.data.keys[Number(arr_key)];
858
822
 
859
823
  const _tableFieldsObj = find_item_by_key(
860
824
  table_obj.tableFields,
@@ -883,7 +847,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
883
847
  for await (var val of body.rows) {
884
848
  if (e.ids) {
885
849
  rows.push({ id: val.id, value: val.value._id });
886
- return true;
850
+ continue;
887
851
  }
888
852
  rows.push({
889
853
  id: val.id,
@@ -917,9 +881,24 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
917
881
  // );}
918
882
 
919
883
  return { code: 1, data: { rows: rows, total_rows: rows.length } };
920
- } catch (error) {
921
- return { code: -1, data: error };
884
+ } catch (err) {
885
+ return { code: -1, data: err.message };
886
+ }
887
+ };
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;
922
897
  }
898
+
899
+ const body = await db.view(`xuda`, "db_table_counts", opt);
900
+
901
+ return { code: 1, data: body };
923
902
  };
924
903
 
925
904
  if (e.reduce && JSON.parse(e.reduce)) {
@@ -931,6 +910,12 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
931
910
  view = e.view;
932
911
  return await runtime_get_query_data();
933
912
  }
913
+
914
+ if (e.count && !e.filter_from) {
915
+ // count tables
916
+ return await count_tables();
917
+ }
918
+
934
919
  return await runtime_get_mango_data();
935
920
  };
936
921
 
@@ -1026,689 +1011,6 @@ exports.read = async (params, setup_doc, resolve, reject) => {
1026
1011
  }
1027
1012
 
1028
1013
  return resolve(ret.data);
1029
-
1030
- // var key;
1031
-
1032
- // const runtime_get_mango_data = async function () {
1033
- // const done = async function (body) {
1034
- // const raw_data = async function () {
1035
- // var rows = [];
1036
-
1037
- // for await (var val of body.docs) {
1038
- // var data = {};
1039
- // if (e.fields) {
1040
- // for await (const [key2, val2] of Object.entries(
1041
- // typeof e.fields === "string" ? e.fields.split(",") : e.fields
1042
- // )) {
1043
- // if (val.udfData) {
1044
- // data[val2] = val["udfData"]["data"][val2];
1045
- // } else {
1046
- // data[val2] = null;
1047
- // }
1048
- // }
1049
- // } else {
1050
- // for await (const [key2, val2] of Object.entries(
1051
- // table_obj.tableFields
1052
- // )) {
1053
- // if (val.udfData) {
1054
- // data[val2.data.field_id] =
1055
- // val["udfData"]["data"][val2.data.field_id];
1056
- // } else {
1057
- // data[val2.data.field_id] = null;
1058
- // }
1059
- // }
1060
- // }
1061
-
1062
- // rows.push({
1063
- // id: val._id,
1064
- // value: {
1065
- // udfData: { data: data },
1066
- // _id: val._id,
1067
- // _rev: val._rev,
1068
- // },
1069
- // });
1070
- // }
1071
-
1072
- // return resolve({ rows: rows, total_rows: rows.length });
1073
- // };
1074
- // const count_data = async function () {
1075
- // var rows = [];
1076
- // var keys_obj = {};
1077
- // const table_index = find_item_by_key_root(
1078
- // table_obj.tableIndexes,
1079
- // "id",
1080
- // e.indexId
1081
- // );
1082
- // if (e.indexId && table_index) {
1083
- // var index_keys = table_index.data.keys;
1084
- // var index_id = e.indexId;
1085
-
1086
- // for await (var val of body.docs) {
1087
- // var data = {};
1088
- // const _tableFieldsObj = find_item_by_key(
1089
- // table_obj.tableFields,
1090
- // "field_id",
1091
- // e.field_id
1092
- // );
1093
-
1094
- // for await (const [key2, val2] of Object.entries(
1095
- // table_obj.tableFields
1096
- // )) {
1097
- // data[val2.data.field_id] =
1098
- // val["udfData"]["data"][val2.data.field_id];
1099
- // }
1100
-
1101
- // var key_arr = [];
1102
-
1103
- // for await (const [key_idx, key_name] of Object.entries(
1104
- // index_keys
1105
- // )) {
1106
- // key_arr.push(data[key_name]);
1107
- // }
1108
- // keys_obj[key_arr]++;
1109
- // }
1110
-
1111
- // for await (const [key_arr, key_count] of Object.entries(keys_obj)) {
1112
- // rows.push({
1113
- // key: [e.key, index_id, key_arr],
1114
- // value: body.docs.length,
1115
- // });
1116
- // }
1117
- // } else {
1118
- // // no index
1119
- // rows.push({ key: "", value: body.docs.length });
1120
- // }
1121
- // return resolve({ rows: rows, total_rows: rows.length });
1122
- // };
1123
-
1124
- // const totals = async function () {
1125
- // const median = (arr) => {
1126
- // const mid = Math.floor(arr.length / 2),
1127
- // nums = [...arr].sort((a, b) => a - b);
1128
- // return arr.length % 2 !== 0
1129
- // ? nums[mid]
1130
- // : (nums[mid - 1] + nums[mid]) / 2;
1131
- // };
1132
-
1133
- // var total_fields_info = JSON.parse(e.total_fields_info);
1134
- // var totals_prop = {};
1135
- // var totals_obj = {};
1136
- // var totals_counts = {};
1137
- // var totals_arr = {};
1138
- // var totals_sums = {};
1139
- // var totals_group_obj = {};
1140
-
1141
- // for await (const [key, val] of Object.entries(total_fields_info)) {
1142
- // totals_counts[val.field_id] = 0;
1143
- // totals_prop[val.field_id] = val;
1144
- // totals_arr[val.field_id] = [];
1145
- // totals_sums[val.field_id] = 0;
1146
- // totals_group_obj[val.field_id] = {};
1147
- // }
1148
-
1149
- // for await (var row_data of body.docs) {
1150
- // for await (const [key, val] of Object.entries(
1151
- // row_data.udfData.data
1152
- // )) {
1153
- // var field_id = key;
1154
- // var value = val;
1155
- // totals_counts[field_id]++;
1156
-
1157
- // switch (totals_prop[field_id].sum_type) {
1158
- // case "sum":
1159
- // if (typeof totals_obj[field_id] === "undefined") {
1160
- // totals_obj[field_id] = value;
1161
- // } else {
1162
- // totals_obj[field_id] += value;
1163
- // }
1164
- // break;
1165
-
1166
- // case "average":
1167
- // totals_sums[field_id] += value;
1168
- // totals_obj[field_id] =
1169
- // totals_sums[field_id] / totals_counts[field_id];
1170
- // break;
1171
-
1172
- // case "median":
1173
- // if (!totals_arr[field_id].includes(value)) {
1174
- // totals_arr[field_id].push(value);
1175
- // }
1176
- // totals_obj[field_id] = median(totals_arr[field_id]);
1177
- // break;
1178
- // case "min":
1179
- // if (
1180
- // typeof totals_obj[field_id] === "undefined" ||
1181
- // value < totals_obj[field_id]
1182
- // ) {
1183
- // totals_obj[field_id] = value;
1184
- // }
1185
- // break;
1186
- // case "max":
1187
- // if (
1188
- // typeof totals_obj[field_id] === "undefined" ||
1189
- // value > totals_obj[field_id]
1190
- // ) {
1191
- // totals_obj[field_id] = value;
1192
- // }
1193
- // break;
1194
- // case "count":
1195
- // if (typeof totals_obj[field_id] === "undefined") {
1196
- // totals_obj[field_id] = 1;
1197
- // } else {
1198
- // totals_obj[field_id]++;
1199
- // }
1200
- // break;
1201
- // case "distinct":
1202
- // if (!totals_arr[field_id].includes(value)) {
1203
- // totals_arr[field_id].push(value);
1204
- // }
1205
- // totals_obj[field_id] = totals_arr[field_id].length;
1206
- // break;
1207
-
1208
- // case "group":
1209
- // if (!totals_obj[field_id]) {
1210
- // totals_obj[field_id] = {};
1211
- // }
1212
-
1213
- // if (typeof totals_obj[field_id][value] === "undefined") {
1214
- // totals_obj[field_id][value] = 1; //value;
1215
- // } else {
1216
- // totals_obj[field_id][value]++; //+= value;
1217
- // }
1218
-
1219
- // break;
1220
- // default:
1221
- // totals_obj[field_id] = null;
1222
- // }
1223
- // }
1224
- // }
1225
- // return resolve(totals_obj);
1226
- // };
1227
- // if (e.count === "true" || e.count === true) {
1228
- // return count_data();
1229
- // }
1230
- // if (e.total_fields_info) {
1231
- // return totals();
1232
- // }
1233
- // return raw_data();
1234
- // };
1235
-
1236
- // var limit = 99999;
1237
- // var skip = 0;
1238
-
1239
- // if (e.limit) {
1240
- // limit = parseInt(e.limit);
1241
- // }
1242
-
1243
- // if (e.skip) {
1244
- // skip = JSON.parse(e.skip);
1245
- // }
1246
-
1247
- // var fields = [];
1248
- // if (e.fields) {
1249
- // for await (const [key, val] of Object.entries(
1250
- // typeof e.fields === "string" ? e.fields.split(",") : e.fields
1251
- // )) {
1252
- // fields.push(val);
1253
- // }
1254
- // } else {
1255
- // for await (const [key, val] of Object.entries(table_obj.tableFields)) {
1256
- // fields.push(val.data.field_id);
1257
- // }
1258
- // }
1259
-
1260
- // var data = {};
1261
- // var from = e.filter_from ? JSON.parse(e.filter_from) : {};
1262
- // var to = e.filter_to ? JSON.parse(e.filter_to) : {};
1263
- // var sort = [];
1264
- // for await (const [key, val] of Object.entries(from)) {
1265
- // var field_name = key;
1266
-
1267
- // sort.push(field_name);
1268
-
1269
- // if (val === to[key]) {
1270
- // data[field_name] = val;
1271
- // } else {
1272
- // data[field_name] = { $gte: val };
1273
- // }
1274
- // }
1275
-
1276
- // for await (const [key, val] of Object.entries(to)) {
1277
- // var field_name = key;
1278
-
1279
- // if (val !== from[key]) {
1280
- // data[field_name]["$lte"] = val;
1281
- // }
1282
- // }
1283
-
1284
- // var selector = {};
1285
-
1286
- // if (from && !_.isEmpty(from)) {
1287
- // selector = data;
1288
- // }
1289
-
1290
- // var opt = {
1291
- // selector: selector,
1292
- // limit: limit,
1293
- // skip: skip,
1294
- // fields: fields,
1295
- // };
1296
-
1297
- // if (sort.length) {
1298
- // opt.sort = sort;
1299
- // }
1300
-
1301
- // if (e.sort_fields && JSON.parse(e.sort_fields).length) {
1302
- // opt.sort = JSON.parse(e.sort_fields);
1303
- // if (opt.sort) {
1304
- // for await (const [key, val] of Object.entries(opt.sort)) {
1305
- // var field_name = val.colId;
1306
- // opt.sort[key] = {
1307
- // ["udfData.data." + field_name]: val.sort,
1308
- // };
1309
- // }
1310
- // }
1311
- // }
1312
-
1313
- // if (e.grid_filter_info) {
1314
- // for await (const [key, val] of Object.entries(
1315
- // JSON.parse(e.grid_filter_info)
1316
- // )) {
1317
- // var field_name = key;
1318
- // var condition = "$and";
1319
- // const make_selector = function (val) {
1320
- // var value = "";
1321
- // var operator = "";
1322
- // var value_to = "";
1323
- // var operator_to = "";
1324
-
1325
- // if (val.filterType === "date") {
1326
- // var date = val.dateFrom.substr(0, 10);
1327
- // switch (val.type) {
1328
- // case "equals":
1329
- // operator = "$regex";
1330
- // value = `^${date}`;
1331
- // break;
1332
-
1333
- // case "greaterThan":
1334
- // operator = "$gt";
1335
- // value = `${date}`;
1336
- // break;
1337
-
1338
- // case "lessThan":
1339
- // operator = "$lt";
1340
- // value = `${date}`;
1341
- // break;
1342
-
1343
- // case "blank":
1344
- // operator = "$eq";
1345
- // value = "";
1346
- // break;
1347
-
1348
- // case "inRange":
1349
- // operator = "$gte";
1350
- // value = date;
1351
- // operator_to = "$lte";
1352
- // value_to = val.dateTo.substr(0, 10);
1353
- // break;
1354
-
1355
- // case "notEqual":
1356
- // operator = "$regex";
1357
- // value = `^((?!${date}).)*$`;
1358
- // break;
1359
-
1360
- // case "notBlank":
1361
- // operator = "$ne";
1362
- // value = "";
1363
- // break;
1364
-
1365
- // default:
1366
- // operator = "$regex";
1367
- // value = `^${date}`;
1368
- // }
1369
- // }
1370
-
1371
- // if (val.filterType === "string") {
1372
- // switch (val.type) {
1373
- // case "contains":
1374
- // operator = "$regex";
1375
- // value = `${val.filter}`;
1376
- // break;
1377
-
1378
- // case "notContains":
1379
- // operator = "$regex";
1380
- // value = `^((?!${val.filter}).)*$`;
1381
- // break;
1382
-
1383
- // case "equals":
1384
- // operator = "$eq";
1385
- // value = `${val.filter}`;
1386
- // break;
1387
-
1388
- // case "notEqual":
1389
- // operator = "$ne";
1390
- // value = `${val.filter}`;
1391
- // break;
1392
-
1393
- // case "startsWith":
1394
- // operator = "$regex";
1395
- // value = `^${val.filter}`;
1396
- // break;
1397
-
1398
- // case "endsWith":
1399
- // operator = "$regex";
1400
- // value = `${val.filter}$`;
1401
- // break;
1402
-
1403
- // case "blank":
1404
- // operator = "$eq";
1405
- // value = "";
1406
- // break;
1407
-
1408
- // case "notBlank":
1409
- // operator = "$ne";
1410
- // value = "";
1411
- // break;
1412
-
1413
- // default:
1414
- // value = "^" + val.filter;
1415
- // }
1416
- // }
1417
-
1418
- // if (val.filterType === "number") {
1419
- // switch (val.type) {
1420
- // case "equals":
1421
- // operator = "$eq";
1422
- // value = val.filter;
1423
- // break;
1424
-
1425
- // case "notEqual":
1426
- // operator = "$ne";
1427
- // value = val.filter;
1428
- // break;
1429
-
1430
- // case "lessThanOrEqual":
1431
- // operator = "$lte";
1432
- // value = val.filter;
1433
- // break;
1434
-
1435
- // case "greaterThanOrEqual":
1436
- // operator = "$gte";
1437
- // value = val.filter;
1438
- // break;
1439
-
1440
- // case "lessThan":
1441
- // operator = "$lt";
1442
- // value = val.filter;
1443
- // break;
1444
-
1445
- // case "greaterThan":
1446
- // operator = "$gt";
1447
- // value = val.filter;
1448
- // break;
1449
-
1450
- // case "blank":
1451
- // operator = "$eq";
1452
- // value = 0;
1453
- // break;
1454
-
1455
- // case "notBlank":
1456
- // operator = "$ne";
1457
- // value = 0;
1458
- // break;
1459
-
1460
- // case "inRange":
1461
- // operator = "$gte";
1462
- // value = val.filter;
1463
- // operator_to = "$lte";
1464
- // value_to = val.filterTo;
1465
- // break;
1466
-
1467
- // default:
1468
- // operator = "$eq";
1469
- // value = val.filter;
1470
- // }
1471
- // }
1472
- // if (!opt.selector[field_name]) {
1473
- // opt.selector[field_name] = {};
1474
- // }
1475
- // if (!opt.selector[field_name][condition]) {
1476
- // opt.selector[field_name][condition] = [];
1477
- // }
1478
- // opt.selector[field_name][condition].push({
1479
- // [operator]: value,
1480
- // });
1481
-
1482
- // if (operator_to) {
1483
- // opt.selector[field_name][condition].push({
1484
- // [operator_to]: value_to,
1485
- // });
1486
- // }
1487
- // };
1488
-
1489
- // if (!val.condition1) {
1490
- // make_selector(val);
1491
- // } else {
1492
- // condition = "$" + val.operator.toLowerCase();
1493
- // make_selector(val.condition1);
1494
- // make_selector(val.condition2);
1495
- // }
1496
- // }
1497
- // }
1498
-
1499
- // if (e.total_fields_info) {
1500
- // fields = [];
1501
- // for await (const [key, val] of Object.entries(
1502
- // JSON.parse(e.total_fields_info)
1503
- // )) {
1504
- // var field_name = val.field_id;
1505
-
1506
- // fields.push(field_name);
1507
- // }
1508
- // opt.fields = fields;
1509
- // }
1510
- // // fix names
1511
-
1512
- // for await (const [key, val] of Object.entries(opt.fields)) {
1513
- // opt.fields[key] = "udfData.data." + val;
1514
- // }
1515
- // if (!e.sort_fields || !JSON.parse(e.sort_fields).length) {
1516
- // // added 2021 09 10
1517
- // if (opt.sort) {
1518
- // for await (const [key, val] of Object.entries(opt.sort)) {
1519
- // opt.sort[key] = {
1520
- // ["udfData.data." + val]: e.sortOrder === "des" ? "desc" : "asc",
1521
- // };
1522
- // }
1523
- // }
1524
- // }
1525
-
1526
- // var selector_new = {};
1527
-
1528
- // for await (const [key, val] of Object.entries(opt.selector)) {
1529
- // selector_new["udfData.data." + key] = val;
1530
- // }
1531
-
1532
- // if (e.viewDbQuery) {
1533
- // for await (const [key, val] of Object.entries(table_obj.tableFields)) {
1534
- // if (e.viewDbQuery.includes(val.id)) {
1535
- // const replacer = new RegExp(val.id, "g");
1536
- // e.viewDbQuery = e.viewDbQuery.replace(
1537
- // replacer,
1538
- // "udfData.data." + val.data.field_id
1539
- // );
1540
- // }
1541
- // }
1542
-
1543
- // let viewDbQuery = JSON.parse(e.viewDbQuery.replace(/\\/g, ""));
1544
-
1545
- // for await (const [key, val] of Object.entries(viewDbQuery)) {
1546
- // selector_new[key] = val;
1547
- // }
1548
- // }
1549
-
1550
- // opt.selector = selector_new;
1551
- // opt.selector["udfData.udffileid"] = e.table_id;
1552
- // opt.selector.stat = e.archived ? 4 : 3;
1553
-
1554
- // opt.fields.push("_id");
1555
- // opt.fields.push("_rev");
1556
-
1557
- // // xuda
1558
- // var cache_string = JSON.stringify(opt);
1559
-
1560
- // // if (__.CACHE_QUERY_REQ?.[app_id_reference]?.[e.table_id]?.[cache_string]) {
1561
- // // return await done(
1562
- // // __.CACHE_QUERY_REQ[app_id_reference][e.table_id][cache_string].doc
1563
- // // );
1564
- // // }
1565
- // debugger;
1566
- // try {
1567
- // try {
1568
- // const doc = await db.find(opt);
1569
- // if (!__.CACHE_QUERY_REQ[app_id_reference]) {
1570
- // __.CACHE_QUERY_REQ[app_id_reference] = {};
1571
- // }
1572
-
1573
- // if (!__.CACHE_QUERY_REQ[app_id_reference][e.table_id]) {
1574
- // __.CACHE_QUERY_REQ[app_id_reference][e.table_id] = {};
1575
- // }
1576
-
1577
- // __.CACHE_QUERY_REQ[app_id_reference][e.table_id][cache_string] = {
1578
- // doc: doc,
1579
- // ts: Date.now(),
1580
- // };
1581
-
1582
- // if (doc?.warning?.includes("No matching index found")) {
1583
- // const index_name = `index_${e.table_id}_${new Date()
1584
- // .valueOf()
1585
- // .toString()}`;
1586
- // var index = [];
1587
-
1588
- // for await (const [key, val] of Object.entries(opt.selector)) {
1589
- // index.push(key);
1590
- // }
1591
- // mango_index_obj = {
1592
- // index: {
1593
- // fields: index,
1594
- // },
1595
- // name: index_name,
1596
- // ddoc: `mango_index_table_${e.table_id}`,
1597
- // };
1598
- // db.createIndex(mango_index_obj).then((result) => {
1599
- // console.log(result);
1600
- // });
1601
- // }
1602
- // return await done(doc);
1603
- // } catch (err) {
1604
- // if (err.error === "no_usable_index") {
1605
- // const index_name = `index_${e.table_id}_${new Date()
1606
- // .valueOf()
1607
- // .toString()}`;
1608
-
1609
- // mango_index_obj = {
1610
- // index: {
1611
- // fields: opt.sort,
1612
- // },
1613
- // name: index_name,
1614
- // ddoc: `mango_index_table_${e.table_id}`,
1615
- // };
1616
-
1617
- // try {
1618
- // const result = await db.createIndex(mango_index_obj);
1619
-
1620
- // const doc = await db.find(opt);
1621
- // return await done(doc);
1622
- // } catch (error) {
1623
- // return reject(error);
1624
- // }
1625
- // } else {
1626
- // return reject(err.message);
1627
- // }
1628
- // }
1629
- // } catch (err) {
1630
- // return reject(err.error);
1631
- // }
1632
- // };
1633
-
1634
- // const runtime_get_query_data = async function () {
1635
- // var limit = 99999;
1636
- // var skip = 0;
1637
-
1638
- // if (e.limit) {
1639
- // limit = e.limitP;
1640
- // }
1641
-
1642
- // if (e.skipP) {
1643
- // skip = e.skipP;
1644
- // }
1645
-
1646
- // var desc = e.desc === "true" ? true : false;
1647
-
1648
- // var opt;
1649
- // if (key) {
1650
- // opt = {
1651
- // key: key,
1652
- // include_docs: !e.ids && view !== "db_index_reduce",
1653
- // limit: limit,
1654
- // skip: skip,
1655
- // };
1656
- // } else {
1657
- // if (e.reduce == "true") {
1658
- // opt = {
1659
- // startkey: e.startkey ? JSON.parse(e.startkey) : "",
1660
- // endkey: e.endkey ? JSON.parse(e.endkey) : "",
1661
- // include_docs: false,
1662
- // reduce: true,
1663
- // group_level: 3,
1664
-
1665
- // descending: desc,
1666
- // };
1667
- // } else {
1668
- // opt = {
1669
- // startkey: e.startkey ? JSON.parse(e.startkey) : "",
1670
- // endkey: e.endkey ? JSON.parse(e.endkey) : "",
1671
- // include_docs: !e.ids,
1672
- // limit: limit,
1673
- // skip: skip,
1674
- // descending: desc,
1675
- // };
1676
- // }
1677
- // }
1678
-
1679
- // try {
1680
- // const body = db.view(`xuda`, view, opt);
1681
- // if (e.reduce) {
1682
- // return resolve(body);
1683
- // }
1684
- // var rows = [];
1685
-
1686
- // for await (var val of body.rows) {
1687
- // if (e.ids) {
1688
- // rows.push({ id: val.id, value: val.value._id });
1689
- // return true;
1690
- // }
1691
- // rows.push({
1692
- // id: val.id,
1693
- // value: { udfData: val.doc.udfData, _id: val.id },
1694
- // });
1695
- // }
1696
- // return resolve({ rows: rows, total_rows: rows.length });
1697
- // } catch (error) {
1698
- // return reject(error);
1699
- // }
1700
- // };
1701
-
1702
- // if (e.reduce && JSON.parse(e.reduce)) {
1703
- // view = "db_index_reduce";
1704
- // return await runtime_get_query_data();
1705
- // }
1706
- // if (e.view === "db_index") {
1707
- // key = e.key;
1708
- // view = e.view;
1709
- // return await runtime_get_query_data();
1710
- // }
1711
- // return await runtime_get_mango_data();
1712
1014
  };
1713
1015
  exports.update = async (params, setup_doc, resolve, reject) => {
1714
1016
  const e = params.e;