@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.
- package/package.json +1 -1
- package/server.js +55 -71
package/package.json
CHANGED
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
|
198
|
+
for (var val of body.docs) {
|
199
199
|
var data = {};
|
200
200
|
if (e.fields) {
|
201
|
-
for
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
312
|
-
for
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 (
|
786
|
-
return { code: -1, data:
|
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.
|
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
|
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 (
|
922
|
-
return { code: -1, data:
|
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
|
|