@xuda.io/xuda-dbs-plugin-xuda 1.0.107 → 1.0.109

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