@xuda.io/xuda-dbs-plugin-xuda 1.0.111 → 1.0.112

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 +639 -313
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/xuda-dbs-plugin-xuda",
3
- "version": "1.0.111",
3
+ "version": "1.0.112",
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
@@ -187,9 +187,335 @@ const get_cast_val = async function (source, attributeP, typeP, valP) {
187
187
  }
188
188
  );
189
189
  };
190
+
191
+ const get_opt = function (e, table_obj) {
192
+ var limit = 99999;
193
+ var skip = 0;
194
+
195
+ if (e.limit) {
196
+ limit = Number(e.limit);
197
+ }
198
+
199
+ if (e.skip) {
200
+ skip = JSON.parse(e.skip);
201
+ }
202
+
203
+ var fields = [];
204
+ if (e.fields) {
205
+ for (const [key, val] of Object.entries(
206
+ typeof e.fields === "string" ? e.fields.split(",") : e.fields
207
+ )) {
208
+ fields.push(val);
209
+ }
210
+ } else {
211
+ for (const [key, val] of Object.entries(table_obj.tableFields)) {
212
+ fields.push(val.data.field_id);
213
+ }
214
+ }
215
+
216
+ var data = {};
217
+ var from = e.filter_from ? JSON.parse(e.filter_from) : {};
218
+ var to = e.filter_to ? JSON.parse(e.filter_to) : {};
219
+ var sort = [];
220
+ for (const [key, val] of Object.entries(from)) {
221
+ var field_name = key;
222
+
223
+ sort.push(field_name);
224
+
225
+ if (val === to[key]) {
226
+ data[field_name] = val;
227
+ } else {
228
+ data[field_name] = { $gte: val };
229
+ }
230
+ }
231
+
232
+ for (const [key, val] of Object.entries(to)) {
233
+ var field_name = key;
234
+
235
+ if (val !== from[key]) {
236
+ data[field_name]["$lte"] = val;
237
+ }
238
+ }
239
+
240
+ var selector = {};
241
+
242
+ if (from && !_.isEmpty(from)) {
243
+ selector = data;
244
+ }
245
+
246
+ var opt = {
247
+ selector,
248
+ limit: limit,
249
+ skip: skip,
250
+ fields: fields,
251
+ };
252
+
253
+ if (sort.length) {
254
+ opt.sort = sort;
255
+ }
256
+
257
+ if (e?.sort_fields?.length) {
258
+ opt.sort = e.sort_fields;
259
+ if (opt.sort) {
260
+ for (const [key, val] of Object.entries(opt.sort)) {
261
+ var field_name = val.colId;
262
+ opt.sort[key] = {
263
+ ["udfData.data." + field_name]: val.sort,
264
+ };
265
+ }
266
+ }
267
+ }
268
+
269
+ if (e.grid_filter_info) {
270
+ for (const [key, val] of Object.entries(e.grid_filter_info)) {
271
+ var field_name = key;
272
+ var condition = "$and";
273
+ const make_selector = function (val) {
274
+ var value = "";
275
+ var operator = "";
276
+ var value_to = "";
277
+ var operator_to = "";
278
+
279
+ if (val.filterType === "date") {
280
+ var date = val.dateFrom.substr(0, 10);
281
+ switch (val.type) {
282
+ case "equals":
283
+ operator = "$regex";
284
+ value = `^${date}`;
285
+ break;
286
+
287
+ case "greaterThan":
288
+ operator = "$gt";
289
+ value = `${date}`;
290
+ break;
291
+
292
+ case "lessThan":
293
+ operator = "$lt";
294
+ value = `${date}`;
295
+ break;
296
+
297
+ case "blank":
298
+ operator = "$eq";
299
+ value = "";
300
+ break;
301
+
302
+ case "inRange":
303
+ operator = "$gte";
304
+ value = date;
305
+ operator_to = "$lte";
306
+ value_to = val.dateTo.substr(0, 10);
307
+ break;
308
+
309
+ case "notEqual":
310
+ operator = "$regex";
311
+ value = `^((?!${date}).)*$`;
312
+ break;
313
+
314
+ case "notBlank":
315
+ operator = "$ne";
316
+ value = "";
317
+ break;
318
+
319
+ default:
320
+ operator = "$regex";
321
+ value = `^${date}`;
322
+ }
323
+ }
324
+
325
+ if (val.filterType === "string" || val.filterType === "text") {
326
+ switch (val.type) {
327
+ case "contains":
328
+ operator = "$regex";
329
+ value = `${val.filter}`;
330
+ break;
331
+
332
+ case "notContains":
333
+ operator = "$regex";
334
+ value = `^((?!${val.filter}).)*$`;
335
+ break;
336
+
337
+ case "equals":
338
+ operator = "$eq";
339
+ value = `${val.filter}`;
340
+ break;
341
+
342
+ case "notEqual":
343
+ operator = "$ne";
344
+ value = `${val.filter}`;
345
+ break;
346
+
347
+ case "startsWith":
348
+ operator = "$regex";
349
+ value = `^${val.filter}`;
350
+ break;
351
+
352
+ case "endsWith":
353
+ operator = "$regex";
354
+ value = `${val.filter}$`;
355
+ break;
356
+
357
+ case "blank":
358
+ operator = "$eq";
359
+ value = "";
360
+ break;
361
+
362
+ case "notBlank":
363
+ operator = "$ne";
364
+ value = "";
365
+ break;
366
+
367
+ default:
368
+ value = "^" + val.filter;
369
+ }
370
+ }
371
+
372
+ if (val.filterType === "number") {
373
+ switch (val.type) {
374
+ case "equals":
375
+ operator = "$eq";
376
+ value = val.filter;
377
+ break;
378
+
379
+ case "notEqual":
380
+ operator = "$ne";
381
+ value = val.filter;
382
+ break;
383
+
384
+ case "lessThanOrEqual":
385
+ operator = "$lte";
386
+ value = val.filter;
387
+ break;
388
+
389
+ case "greaterThanOrEqual":
390
+ operator = "$gte";
391
+ value = val.filter;
392
+ break;
393
+
394
+ case "lessThan":
395
+ operator = "$lt";
396
+ value = val.filter;
397
+ break;
398
+
399
+ case "greaterThan":
400
+ operator = "$gt";
401
+ value = val.filter;
402
+ break;
403
+
404
+ case "blank":
405
+ operator = "$eq";
406
+ value = 0;
407
+ break;
408
+
409
+ case "notBlank":
410
+ operator = "$ne";
411
+ value = 0;
412
+ break;
413
+
414
+ case "inRange":
415
+ operator = "$gte";
416
+ value = val.filter;
417
+ operator_to = "$lte";
418
+ value_to = val.filterTo;
419
+ break;
420
+
421
+ default:
422
+ operator = "$eq";
423
+ value = val.filter;
424
+ }
425
+ }
426
+ if (!opt.selector[field_name]) {
427
+ opt.selector[field_name] = {};
428
+ }
429
+ if (!opt.selector[field_name][condition]) {
430
+ opt.selector[field_name][condition] = [];
431
+ }
432
+ opt.selector[field_name][condition].push({
433
+ [operator]: value,
434
+ });
435
+
436
+ if (operator_to) {
437
+ opt.selector[field_name][condition].push({
438
+ [operator_to]: value_to,
439
+ });
440
+ }
441
+ };
442
+
443
+ if (!val.condition1) {
444
+ make_selector(val);
445
+ } else {
446
+ condition = "$" + val.operator.toLowerCase();
447
+ make_selector(val.condition1);
448
+ make_selector(val.condition2);
449
+ }
450
+ }
451
+ }
452
+
453
+ if (e.total_fields_info) {
454
+ fields = [];
455
+ for (const [key, val] of Object.entries(JSON.parse(e.total_fields_info))) {
456
+ var field_name = val.field_id;
457
+
458
+ fields.push(field_name);
459
+ }
460
+ opt.fields = fields;
461
+ }
462
+ // fix names
463
+
464
+ for (const [key, val] of Object.entries(opt.fields)) {
465
+ opt.fields[key] = "udfData.data." + val;
466
+ }
467
+ if (!e?.sort_fields?.length) {
468
+ // added 2021 09 10
469
+ if (opt.sort) {
470
+ for (const [key, val] of Object.entries(opt.sort)) {
471
+ opt.sort[key] = {
472
+ ["udfData.data." + val]: e.sortOrder === "des" ? "desc" : "asc",
473
+ };
474
+ }
475
+ }
476
+ }
477
+
478
+ var selector_new = {};
479
+
480
+ for (const [key, val] of Object.entries(opt.selector)) {
481
+ selector_new["udfData.data." + key] = val;
482
+ }
483
+
484
+ if (e.viewDbQuery) {
485
+ for (const [key, val] of Object.entries(table_obj.tableFields)) {
486
+ if (e.viewDbQuery.includes(val.id)) {
487
+ const replacer = new RegExp(val.id, "g");
488
+ e.viewDbQuery = e.viewDbQuery.replace(
489
+ replacer,
490
+ "udfData.data." + val.data.field_id
491
+ );
492
+ }
493
+ }
494
+
495
+ let viewDbQuery = JSON.parse(e.viewDbQuery.replace(/\\/g, ""));
496
+
497
+ for (const [key, val] of Object.entries(viewDbQuery)) {
498
+ selector_new[key] = val;
499
+ }
500
+ }
501
+
502
+ opt.selector = selector_new;
503
+ opt.selector["udfData.udffileid"] = e.table_id;
504
+ opt.selector.stat = e.archived ? 4 : 3;
505
+
506
+ opt.fields.push("_id");
507
+ opt.fields.push("_rev");
508
+
509
+ if (e.selector) {
510
+ opt.selector = { ...e.selector, ...opt.selector };
511
+ }
512
+
513
+ return opt;
514
+ };
515
+
190
516
  const query_db = async function (e, db, app_id_reference, table_obj) {
191
517
  var key = undefined;
192
-
518
+ var opt = get_opt(e, table_obj);
193
519
  const runtime_get_mango_data = async function () {
194
520
  const done = async function (body) {
195
521
  const raw_data = async function () {
@@ -224,7 +550,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
224
550
  });
225
551
  }
226
552
 
227
- return { code: 1, data: { rows: rows, total_rows: rows.length } };
553
+ return { code: 1, data: { rows: rows, total_rows: rows.length, opt } };
228
554
  };
229
555
  const count_data = async function () {
230
556
  var rows = [];
@@ -269,7 +595,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
269
595
  // no index
270
596
  rows.push({ key: "", value: body.docs.length });
271
597
  }
272
- return { code: 1, data: { rows: rows, total_rows: rows.length } };
598
+ return { code: 1, data: { rows: rows, total_rows: rows.length, opt } };
273
599
  };
274
600
 
275
601
  const totals = async function () {
@@ -382,84 +708,73 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
382
708
  return raw_data();
383
709
  };
384
710
 
385
- var limit = 99999;
386
- var skip = 0;
711
+ // var limit = 99999;
712
+ // var skip = 0;
387
713
 
388
- if (e.limit) {
389
- limit = Number(e.limit);
390
- }
714
+ // if (e.limit) {
715
+ // limit = Number(e.limit);
716
+ // }
391
717
 
392
- if (e.skip) {
393
- skip = JSON.parse(e.skip);
394
- }
718
+ // if (e.skip) {
719
+ // skip = JSON.parse(e.skip);
720
+ // }
395
721
 
396
- var fields = [];
397
- if (e.fields) {
398
- for (const [key, val] of Object.entries(
399
- typeof e.fields === "string" ? e.fields.split(",") : e.fields
400
- )) {
401
- fields.push(val);
402
- }
403
- } else {
404
- for (const [key, val] of Object.entries(table_obj.tableFields)) {
405
- fields.push(val.data.field_id);
406
- }
407
- }
722
+ // var fields = [];
723
+ // if (e.fields) {
724
+ // for (const [key, val] of Object.entries(
725
+ // typeof e.fields === "string" ? e.fields.split(",") : e.fields
726
+ // )) {
727
+ // fields.push(val);
728
+ // }
729
+ // } else {
730
+ // for (const [key, val] of Object.entries(table_obj.tableFields)) {
731
+ // fields.push(val.data.field_id);
732
+ // }
733
+ // }
408
734
 
409
- var data = {};
410
- var from = e.filter_from ? JSON.parse(e.filter_from) : {};
411
- var to = e.filter_to ? JSON.parse(e.filter_to) : {};
412
- var sort = [];
413
- for (const [key, val] of Object.entries(from)) {
414
- var field_name = key;
735
+ // var data = {};
736
+ // var from = e.filter_from ? JSON.parse(e.filter_from) : {};
737
+ // var to = e.filter_to ? JSON.parse(e.filter_to) : {};
738
+ // var sort = [];
739
+ // for (const [key, val] of Object.entries(from)) {
740
+ // var field_name = key;
415
741
 
416
- sort.push(field_name);
742
+ // sort.push(field_name);
417
743
 
418
- if (val === to[key]) {
419
- data[field_name] = val;
420
- } else {
421
- data[field_name] = { $gte: val };
422
- }
423
- }
744
+ // if (val === to[key]) {
745
+ // data[field_name] = val;
746
+ // } else {
747
+ // data[field_name] = { $gte: val };
748
+ // }
749
+ // }
424
750
 
425
- for (const [key, val] of Object.entries(to)) {
426
- var field_name = key;
751
+ // for (const [key, val] of Object.entries(to)) {
752
+ // var field_name = key;
427
753
 
428
- if (val !== from[key]) {
429
- data[field_name]["$lte"] = val;
430
- }
431
- }
754
+ // if (val !== from[key]) {
755
+ // data[field_name]["$lte"] = val;
756
+ // }
757
+ // }
432
758
 
433
- var selector = {};
759
+ // var selector = {};
434
760
 
435
- if (from && !_.isEmpty(from)) {
436
- selector = data;
437
- }
761
+ // if (from && !_.isEmpty(from)) {
762
+ // selector = data;
763
+ // }
438
764
 
439
- var opt = {
440
- selector,
441
- limit: limit,
442
- skip: skip,
443
- fields: fields,
444
- };
765
+ // var opt = {
766
+ // selector,
767
+ // limit: limit,
768
+ // skip: skip,
769
+ // fields: fields,
770
+ // };
445
771
 
446
- if (sort.length) {
447
- opt.sort = sort;
448
- }
772
+ // if (sort.length) {
773
+ // opt.sort = sort;
774
+ // }
449
775
 
450
- if (e?.sort_fields?.length) {
451
- opt.sort = e.sort_fields;
452
- if (opt.sort) {
453
- for (const [key, val] of Object.entries(opt.sort)) {
454
- var field_name = val.colId;
455
- opt.sort[key] = {
456
- ["udfData.data." + field_name]: val.sort,
457
- };
458
- }
459
- }
460
- }
461
- // if (e.sort_fields && JSON.parse(e.sort_fields).length) {
462
- // opt.sort = JSON.parse(e.sort_fields);
776
+ // if (e?.sort_fields?.length) {
777
+ // opt.sort = e.sort_fields;
463
778
  // if (opt.sort) {
464
779
  // for (const [key, val] of Object.entries(opt.sort)) {
465
780
  // var field_name = val.colId;
@@ -469,218 +784,219 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
469
784
  // }
470
785
  // }
471
786
  // }
787
+ // // if (e.sort_fields && JSON.parse(e.sort_fields).length) {
788
+ // // opt.sort = JSON.parse(e.sort_fields);
789
+ // // if (opt.sort) {
790
+ // // for (const [key, val] of Object.entries(opt.sort)) {
791
+ // // var field_name = val.colId;
792
+ // // opt.sort[key] = {
793
+ // // ["udfData.data." + field_name]: val.sort,
794
+ // // };
795
+ // // }
796
+ // // }
797
+ // // }
798
+
799
+ // if (e.grid_filter_info) {
800
+ // for (const [key, val] of Object.entries(e.grid_filter_info)) {
801
+ // var field_name = key;
802
+ // var condition = "$and";
803
+ // const make_selector = function (val) {
804
+ // var value = "";
805
+ // var operator = "";
806
+ // var value_to = "";
807
+ // var operator_to = "";
808
+
809
+ // if (val.filterType === "date") {
810
+ // var date = val.dateFrom.substr(0, 10);
811
+ // switch (val.type) {
812
+ // case "equals":
813
+ // operator = "$regex";
814
+ // value = `^${date}`;
815
+ // break;
816
+
817
+ // case "greaterThan":
818
+ // operator = "$gt";
819
+ // value = `${date}`;
820
+ // break;
821
+
822
+ // case "lessThan":
823
+ // operator = "$lt";
824
+ // value = `${date}`;
825
+ // break;
826
+
827
+ // case "blank":
828
+ // operator = "$eq";
829
+ // value = "";
830
+ // break;
831
+
832
+ // case "inRange":
833
+ // operator = "$gte";
834
+ // value = date;
835
+ // operator_to = "$lte";
836
+ // value_to = val.dateTo.substr(0, 10);
837
+ // break;
838
+
839
+ // case "notEqual":
840
+ // operator = "$regex";
841
+ // value = `^((?!${date}).)*$`;
842
+ // break;
843
+
844
+ // case "notBlank":
845
+ // operator = "$ne";
846
+ // value = "";
847
+ // break;
848
+
849
+ // default:
850
+ // operator = "$regex";
851
+ // value = `^${date}`;
852
+ // }
853
+ // }
854
+
855
+ // if (val.filterType === "string" || val.filterType === "text") {
856
+ // switch (val.type) {
857
+ // case "contains":
858
+ // operator = "$regex";
859
+ // value = `${val.filter}`;
860
+ // break;
861
+
862
+ // case "notContains":
863
+ // operator = "$regex";
864
+ // value = `^((?!${val.filter}).)*$`;
865
+ // break;
866
+
867
+ // case "equals":
868
+ // operator = "$eq";
869
+ // value = `${val.filter}`;
870
+ // break;
871
+
872
+ // case "notEqual":
873
+ // operator = "$ne";
874
+ // value = `${val.filter}`;
875
+ // break;
876
+
877
+ // case "startsWith":
878
+ // operator = "$regex";
879
+ // value = `^${val.filter}`;
880
+ // break;
881
+
882
+ // case "endsWith":
883
+ // operator = "$regex";
884
+ // value = `${val.filter}$`;
885
+ // break;
886
+
887
+ // case "blank":
888
+ // operator = "$eq";
889
+ // value = "";
890
+ // break;
891
+
892
+ // case "notBlank":
893
+ // operator = "$ne";
894
+ // value = "";
895
+ // break;
896
+
897
+ // default:
898
+ // value = "^" + val.filter;
899
+ // }
900
+ // }
901
+
902
+ // if (val.filterType === "number") {
903
+ // switch (val.type) {
904
+ // case "equals":
905
+ // operator = "$eq";
906
+ // value = val.filter;
907
+ // break;
908
+
909
+ // case "notEqual":
910
+ // operator = "$ne";
911
+ // value = val.filter;
912
+ // break;
913
+
914
+ // case "lessThanOrEqual":
915
+ // operator = "$lte";
916
+ // value = val.filter;
917
+ // break;
918
+
919
+ // case "greaterThanOrEqual":
920
+ // operator = "$gte";
921
+ // value = val.filter;
922
+ // break;
923
+
924
+ // case "lessThan":
925
+ // operator = "$lt";
926
+ // value = val.filter;
927
+ // break;
928
+
929
+ // case "greaterThan":
930
+ // operator = "$gt";
931
+ // value = val.filter;
932
+ // break;
933
+
934
+ // case "blank":
935
+ // operator = "$eq";
936
+ // value = 0;
937
+ // break;
938
+
939
+ // case "notBlank":
940
+ // operator = "$ne";
941
+ // value = 0;
942
+ // break;
943
+
944
+ // case "inRange":
945
+ // operator = "$gte";
946
+ // value = val.filter;
947
+ // operator_to = "$lte";
948
+ // value_to = val.filterTo;
949
+ // break;
950
+
951
+ // default:
952
+ // operator = "$eq";
953
+ // value = val.filter;
954
+ // }
955
+ // }
956
+ // if (!opt.selector[field_name]) {
957
+ // opt.selector[field_name] = {};
958
+ // }
959
+ // if (!opt.selector[field_name][condition]) {
960
+ // opt.selector[field_name][condition] = [];
961
+ // }
962
+ // opt.selector[field_name][condition].push({
963
+ // [operator]: value,
964
+ // });
965
+
966
+ // if (operator_to) {
967
+ // opt.selector[field_name][condition].push({
968
+ // [operator_to]: value_to,
969
+ // });
970
+ // }
971
+ // };
972
+
973
+ // if (!val.condition1) {
974
+ // make_selector(val);
975
+ // } else {
976
+ // condition = "$" + val.operator.toLowerCase();
977
+ // make_selector(val.condition1);
978
+ // make_selector(val.condition2);
979
+ // }
980
+ // }
981
+ // }
472
982
 
473
- if (e.grid_filter_info) {
474
- for (const [key, val] of Object.entries(e.grid_filter_info)) {
475
- var field_name = key;
476
- var condition = "$and";
477
- const make_selector = function (val) {
478
- var value = "";
479
- var operator = "";
480
- var value_to = "";
481
- var operator_to = "";
482
-
483
- if (val.filterType === "date") {
484
- var date = val.dateFrom.substr(0, 10);
485
- switch (val.type) {
486
- case "equals":
487
- operator = "$regex";
488
- value = `^${date}`;
489
- break;
490
-
491
- case "greaterThan":
492
- operator = "$gt";
493
- value = `${date}`;
494
- break;
495
-
496
- case "lessThan":
497
- operator = "$lt";
498
- value = `${date}`;
499
- break;
500
-
501
- case "blank":
502
- operator = "$eq";
503
- value = "";
504
- break;
505
-
506
- case "inRange":
507
- operator = "$gte";
508
- value = date;
509
- operator_to = "$lte";
510
- value_to = val.dateTo.substr(0, 10);
511
- break;
512
-
513
- case "notEqual":
514
- operator = "$regex";
515
- value = `^((?!${date}).)*$`;
516
- break;
517
-
518
- case "notBlank":
519
- operator = "$ne";
520
- value = "";
521
- break;
522
-
523
- default:
524
- operator = "$regex";
525
- value = `^${date}`;
526
- }
527
- }
528
-
529
- if (val.filterType === "string" || val.filterType === "text") {
530
- switch (val.type) {
531
- case "contains":
532
- operator = "$regex";
533
- value = `${val.filter}`;
534
- break;
535
-
536
- case "notContains":
537
- operator = "$regex";
538
- value = `^((?!${val.filter}).)*$`;
539
- break;
540
-
541
- case "equals":
542
- operator = "$eq";
543
- value = `${val.filter}`;
544
- break;
545
-
546
- case "notEqual":
547
- operator = "$ne";
548
- value = `${val.filter}`;
549
- break;
550
-
551
- case "startsWith":
552
- operator = "$regex";
553
- value = `^${val.filter}`;
554
- break;
555
-
556
- case "endsWith":
557
- operator = "$regex";
558
- value = `${val.filter}$`;
559
- break;
560
-
561
- case "blank":
562
- operator = "$eq";
563
- value = "";
564
- break;
565
-
566
- case "notBlank":
567
- operator = "$ne";
568
- value = "";
569
- break;
570
-
571
- default:
572
- value = "^" + val.filter;
573
- }
574
- }
575
-
576
- if (val.filterType === "number") {
577
- switch (val.type) {
578
- case "equals":
579
- operator = "$eq";
580
- value = val.filter;
581
- break;
582
-
583
- case "notEqual":
584
- operator = "$ne";
585
- value = val.filter;
586
- break;
587
-
588
- case "lessThanOrEqual":
589
- operator = "$lte";
590
- value = val.filter;
591
- break;
592
-
593
- case "greaterThanOrEqual":
594
- operator = "$gte";
595
- value = val.filter;
596
- break;
597
-
598
- case "lessThan":
599
- operator = "$lt";
600
- value = val.filter;
601
- break;
602
-
603
- case "greaterThan":
604
- operator = "$gt";
605
- value = val.filter;
606
- break;
607
-
608
- case "blank":
609
- operator = "$eq";
610
- value = 0;
611
- break;
612
-
613
- case "notBlank":
614
- operator = "$ne";
615
- value = 0;
616
- break;
617
-
618
- case "inRange":
619
- operator = "$gte";
620
- value = val.filter;
621
- operator_to = "$lte";
622
- value_to = val.filterTo;
623
- break;
624
-
625
- default:
626
- operator = "$eq";
627
- value = val.filter;
628
- }
629
- }
630
- if (!opt.selector[field_name]) {
631
- opt.selector[field_name] = {};
632
- }
633
- if (!opt.selector[field_name][condition]) {
634
- opt.selector[field_name][condition] = [];
635
- }
636
- opt.selector[field_name][condition].push({
637
- [operator]: value,
638
- });
639
-
640
- if (operator_to) {
641
- opt.selector[field_name][condition].push({
642
- [operator_to]: value_to,
643
- });
644
- }
645
- };
646
-
647
- if (!val.condition1) {
648
- make_selector(val);
649
- } else {
650
- condition = "$" + val.operator.toLowerCase();
651
- make_selector(val.condition1);
652
- make_selector(val.condition2);
653
- }
654
- }
655
- }
656
-
657
- if (e.total_fields_info) {
658
- fields = [];
659
- for (const [key, val] of Object.entries(
660
- JSON.parse(e.total_fields_info)
661
- )) {
662
- var field_name = val.field_id;
983
+ // if (e.total_fields_info) {
984
+ // fields = [];
985
+ // for (const [key, val] of Object.entries(
986
+ // JSON.parse(e.total_fields_info)
987
+ // )) {
988
+ // var field_name = val.field_id;
663
989
 
664
- fields.push(field_name);
665
- }
666
- opt.fields = fields;
667
- }
668
- // fix names
990
+ // fields.push(field_name);
991
+ // }
992
+ // opt.fields = fields;
993
+ // }
994
+ // // fix names
669
995
 
670
- for (const [key, val] of Object.entries(opt.fields)) {
671
- opt.fields[key] = "udfData.data." + val;
672
- }
673
- if (!e?.sort_fields?.length) {
674
- // added 2021 09 10
675
- if (opt.sort) {
676
- for (const [key, val] of Object.entries(opt.sort)) {
677
- opt.sort[key] = {
678
- ["udfData.data." + val]: e.sortOrder === "des" ? "desc" : "asc",
679
- };
680
- }
681
- }
682
- }
683
- // if (!e.sort_fields || !JSON.parse(e.sort_fields).length) {
996
+ // for (const [key, val] of Object.entries(opt.fields)) {
997
+ // opt.fields[key] = "udfData.data." + val;
998
+ // }
999
+ // if (!e?.sort_fields?.length) {
684
1000
  // // added 2021 09 10
685
1001
  // if (opt.sort) {
686
1002
  // for (const [key, val] of Object.entries(opt.sort)) {
@@ -690,41 +1006,51 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
690
1006
  // }
691
1007
  // }
692
1008
  // }
1009
+ // // if (!e.sort_fields || !JSON.parse(e.sort_fields).length) {
1010
+ // // // added 2021 09 10
1011
+ // // if (opt.sort) {
1012
+ // // for (const [key, val] of Object.entries(opt.sort)) {
1013
+ // // opt.sort[key] = {
1014
+ // // ["udfData.data." + val]: e.sortOrder === "des" ? "desc" : "asc",
1015
+ // // };
1016
+ // // }
1017
+ // // }
1018
+ // // }
1019
+
1020
+ // var selector_new = {};
1021
+
1022
+ // for (const [key, val] of Object.entries(opt.selector)) {
1023
+ // selector_new["udfData.data." + key] = val;
1024
+ // }
693
1025
 
694
- var selector_new = {};
695
-
696
- for (const [key, val] of Object.entries(opt.selector)) {
697
- selector_new["udfData.data." + key] = val;
698
- }
699
-
700
- if (e.viewDbQuery) {
701
- for (const [key, val] of Object.entries(table_obj.tableFields)) {
702
- if (e.viewDbQuery.includes(val.id)) {
703
- const replacer = new RegExp(val.id, "g");
704
- e.viewDbQuery = e.viewDbQuery.replace(
705
- replacer,
706
- "udfData.data." + val.data.field_id
707
- );
708
- }
709
- }
1026
+ // if (e.viewDbQuery) {
1027
+ // for (const [key, val] of Object.entries(table_obj.tableFields)) {
1028
+ // if (e.viewDbQuery.includes(val.id)) {
1029
+ // const replacer = new RegExp(val.id, "g");
1030
+ // e.viewDbQuery = e.viewDbQuery.replace(
1031
+ // replacer,
1032
+ // "udfData.data." + val.data.field_id
1033
+ // );
1034
+ // }
1035
+ // }
710
1036
 
711
- let viewDbQuery = JSON.parse(e.viewDbQuery.replace(/\\/g, ""));
1037
+ // let viewDbQuery = JSON.parse(e.viewDbQuery.replace(/\\/g, ""));
712
1038
 
713
- for (const [key, val] of Object.entries(viewDbQuery)) {
714
- selector_new[key] = val;
715
- }
716
- }
1039
+ // for (const [key, val] of Object.entries(viewDbQuery)) {
1040
+ // selector_new[key] = val;
1041
+ // }
1042
+ // }
717
1043
 
718
- opt.selector = selector_new;
719
- opt.selector["udfData.udffileid"] = e.table_id;
720
- opt.selector.stat = e.archived ? 4 : 3;
1044
+ // opt.selector = selector_new;
1045
+ // opt.selector["udfData.udffileid"] = e.table_id;
1046
+ // opt.selector.stat = e.archived ? 4 : 3;
721
1047
 
722
- opt.fields.push("_id");
723
- opt.fields.push("_rev");
1048
+ // opt.fields.push("_id");
1049
+ // opt.fields.push("_rev");
724
1050
 
725
- if (e.selector) {
726
- opt.selector = { ...e.selector, ...opt.selector };
727
- }
1051
+ // if (e.selector) {
1052
+ // opt.selector = { ...e.selector, ...opt.selector };
1053
+ // }
728
1054
 
729
1055
  // xuda
730
1056
 
@@ -797,9 +1123,9 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
797
1123
  skip = e.skipP;
798
1124
  }
799
1125
 
800
- var opt = undefined;
1126
+ var view_opt = undefined;
801
1127
  if (key) {
802
- opt = {
1128
+ view_opt = {
803
1129
  key: key,
804
1130
  include_docs: !e.ids && view !== "db_index_reduce",
805
1131
  limit: limit,
@@ -807,7 +1133,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
807
1133
  };
808
1134
  } else {
809
1135
  if (e.reduce) {
810
- opt = {
1136
+ view_opt = {
811
1137
  startkey: e.startkey ? JSON.parse(e.startkey) : "",
812
1138
  endkey: e.endkey ? JSON.parse(e.endkey) : "",
813
1139
  include_docs: false,
@@ -817,7 +1143,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
817
1143
  descending: e.desc,
818
1144
  };
819
1145
  } else {
820
- opt = {
1146
+ view_opt = {
821
1147
  startkey: e.startkey ? JSON.parse(e.startkey) : "",
822
1148
  endkey: e.endkey ? JSON.parse(e.endkey) : "",
823
1149
  include_docs: !e.ids,
@@ -829,7 +1155,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
829
1155
  }
830
1156
 
831
1157
  try {
832
- const body = await db.view(`xuda`, view, opt);
1158
+ const body = await db.view(`xuda`, view, view_opt);
833
1159
  if (e.reduce) {
834
1160
  let rows = [];
835
1161
 
@@ -865,7 +1191,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
865
1191
 
866
1192
  rows.push({ id: crypto.randomUUID(), value: obj });
867
1193
  }
868
- return { code: 1, data: { rows } };
1194
+ return { code: 1, data: { rows, opt } };
869
1195
  }
870
1196
 
871
1197
  var rows = [];
@@ -906,7 +1232,7 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
906
1232
  // { sort: opt.sort, group: {} }
907
1233
  // );}
908
1234
 
909
- return { code: 1, data: { rows: rows, total_rows: rows.length } };
1235
+ return { code: 1, data: { rows: rows, total_rows: rows.length, opt } };
910
1236
  } catch (err) {
911
1237
  return { code: -1, data: err.message };
912
1238
  }