@xuda.io/xuda-dbs-plugin-xuda 1.0.134 → 1.0.136
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 +10 -1
- package/studio.mjs +17 -327
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@xuda.io/xuda-dbs-plugin-xuda",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.136",
|
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
@@ -744,7 +744,16 @@ const query_db = async function (e, db, app_id_reference, table_obj) {
|
|
744
744
|
|
745
745
|
mango_index_obj = {
|
746
746
|
index: {
|
747
|
-
fields:
|
747
|
+
fields: Object.keys(
|
748
|
+
_.reduce(
|
749
|
+
opt.sort,
|
750
|
+
(ret, val) => {
|
751
|
+
ret[Object.keys(val)[0]] = val;
|
752
|
+
return ret;
|
753
|
+
},
|
754
|
+
opt.selector
|
755
|
+
)
|
756
|
+
),
|
748
757
|
},
|
749
758
|
name: index_name,
|
750
759
|
ddoc: `mango_index_table_${e.table_id}`,
|
package/studio.mjs
CHANGED
@@ -722,329 +722,6 @@ const query_db = async function (e, db, table_obj) {
|
|
722
722
|
return raw_data();
|
723
723
|
};
|
724
724
|
|
725
|
-
// var limit = 99999;
|
726
|
-
// var skip = 0;
|
727
|
-
|
728
|
-
// if (e.limit) {
|
729
|
-
// limit = Number(e.limit);
|
730
|
-
// }
|
731
|
-
|
732
|
-
// if (e.skip) {
|
733
|
-
// skip = JSON.parse(e.skip);
|
734
|
-
// }
|
735
|
-
|
736
|
-
// var fields = [];
|
737
|
-
// if (e.fields) {
|
738
|
-
// for (const [key, val] of Object.entries(
|
739
|
-
// typeof e.fields === "string" ? e.fields.split(",") : e.fields
|
740
|
-
// )) {
|
741
|
-
// fields.push(val);
|
742
|
-
// }
|
743
|
-
// } else {
|
744
|
-
// for (const [key, val] of Object.entries(table_obj.tableFields)) {
|
745
|
-
// fields.push(val.data.field_id);
|
746
|
-
// }
|
747
|
-
// }
|
748
|
-
|
749
|
-
// var data = {};
|
750
|
-
// var from = e.filter_from ? JSON.parse(e.filter_from) : {};
|
751
|
-
// var to = e.filter_to ? JSON.parse(e.filter_to) : {};
|
752
|
-
// var sort = [];
|
753
|
-
// for (const [key, val] of Object.entries(from)) {
|
754
|
-
// var field_name = key;
|
755
|
-
|
756
|
-
// sort.push(field_name);
|
757
|
-
|
758
|
-
// if (val === to[key]) {
|
759
|
-
// data[field_name] = val;
|
760
|
-
// } else {
|
761
|
-
// data[field_name] = { $gte: val };
|
762
|
-
// }
|
763
|
-
// }
|
764
|
-
|
765
|
-
// for (const [key, val] of Object.entries(to)) {
|
766
|
-
// var field_name = key;
|
767
|
-
|
768
|
-
// if (val !== from[key]) {
|
769
|
-
// data[field_name]["$lte"] = val;
|
770
|
-
// }
|
771
|
-
// }
|
772
|
-
|
773
|
-
// var selector = {};
|
774
|
-
|
775
|
-
// if (from && !_.isEmpty(from)) {
|
776
|
-
// selector = data;
|
777
|
-
// }
|
778
|
-
|
779
|
-
// var opt = {
|
780
|
-
// selector,
|
781
|
-
// limit: limit,
|
782
|
-
// skip: skip,
|
783
|
-
// fields: fields,
|
784
|
-
// };
|
785
|
-
|
786
|
-
// if (sort.length) {
|
787
|
-
// opt.sort = sort;
|
788
|
-
// }
|
789
|
-
|
790
|
-
// if (e?.sort_fields?.length) {
|
791
|
-
// opt.sort = e.sort_fields;
|
792
|
-
// if (opt.sort) {
|
793
|
-
// for (const [key, val] of Object.entries(opt.sort)) {
|
794
|
-
// var field_name = val.colId;
|
795
|
-
// opt.sort[key] = {
|
796
|
-
// ["udfData.data." + field_name]: val.sort,
|
797
|
-
// };
|
798
|
-
// }
|
799
|
-
// }
|
800
|
-
// }
|
801
|
-
|
802
|
-
// if (e.grid_filter_info) {
|
803
|
-
// for (const [key, val] of Object.entries(e.grid_filter_info)) {
|
804
|
-
// var field_name = key;
|
805
|
-
// var condition = "$and";
|
806
|
-
// const make_selector = function (val) {
|
807
|
-
// var value = "";
|
808
|
-
// var operator = "";
|
809
|
-
// var value_to = "";
|
810
|
-
// var operator_to = "";
|
811
|
-
|
812
|
-
// if (val.filterType === "date") {
|
813
|
-
// var date = val.dateFrom.substr(0, 10);
|
814
|
-
// switch (val.type) {
|
815
|
-
// case "equals":
|
816
|
-
// operator = "$regex";
|
817
|
-
// value = `^${date}`;
|
818
|
-
// break;
|
819
|
-
|
820
|
-
// case "greaterThan":
|
821
|
-
// operator = "$gt";
|
822
|
-
// value = `${date}`;
|
823
|
-
// break;
|
824
|
-
|
825
|
-
// case "lessThan":
|
826
|
-
// operator = "$lt";
|
827
|
-
// value = `${date}`;
|
828
|
-
// break;
|
829
|
-
|
830
|
-
// case "blank":
|
831
|
-
// operator = "$eq";
|
832
|
-
// value = "";
|
833
|
-
// break;
|
834
|
-
|
835
|
-
// case "inRange":
|
836
|
-
// operator = "$gte";
|
837
|
-
// value = date;
|
838
|
-
// operator_to = "$lte";
|
839
|
-
// value_to = val.dateTo.substr(0, 10);
|
840
|
-
// break;
|
841
|
-
|
842
|
-
// case "notEqual":
|
843
|
-
// operator = "$regex";
|
844
|
-
// value = `^((?!${date}).)*$`;
|
845
|
-
// break;
|
846
|
-
|
847
|
-
// case "notBlank":
|
848
|
-
// operator = "$ne";
|
849
|
-
// value = "";
|
850
|
-
// break;
|
851
|
-
|
852
|
-
// default:
|
853
|
-
// operator = "$regex";
|
854
|
-
// value = `^${date}`;
|
855
|
-
// }
|
856
|
-
// }
|
857
|
-
|
858
|
-
// if (val.filterType === "string" || val.filterType === "text") {
|
859
|
-
// switch (val.type) {
|
860
|
-
// case "contains":
|
861
|
-
// operator = "$regex";
|
862
|
-
// value = `${val.filter}`;
|
863
|
-
// break;
|
864
|
-
|
865
|
-
// case "notContains":
|
866
|
-
// operator = "$regex";
|
867
|
-
// value = `^((?!${val.filter}).)*$`;
|
868
|
-
// break;
|
869
|
-
|
870
|
-
// case "equals":
|
871
|
-
// operator = "$eq";
|
872
|
-
// value = `${val.filter}`;
|
873
|
-
// break;
|
874
|
-
|
875
|
-
// case "notEqual":
|
876
|
-
// operator = "$ne";
|
877
|
-
// value = `${val.filter}`;
|
878
|
-
// break;
|
879
|
-
|
880
|
-
// case "startsWith":
|
881
|
-
// operator = "$regex";
|
882
|
-
// value = `^${val.filter}`;
|
883
|
-
// break;
|
884
|
-
|
885
|
-
// case "endsWith":
|
886
|
-
// operator = "$regex";
|
887
|
-
// value = `${val.filter}$`;
|
888
|
-
// break;
|
889
|
-
|
890
|
-
// case "blank":
|
891
|
-
// operator = "$eq";
|
892
|
-
// value = "";
|
893
|
-
// break;
|
894
|
-
|
895
|
-
// case "notBlank":
|
896
|
-
// operator = "$ne";
|
897
|
-
// value = "";
|
898
|
-
// break;
|
899
|
-
|
900
|
-
// default:
|
901
|
-
// value = "^" + val.filter;
|
902
|
-
// }
|
903
|
-
// }
|
904
|
-
|
905
|
-
// if (val.filterType === "number") {
|
906
|
-
// switch (val.type) {
|
907
|
-
// case "equals":
|
908
|
-
// operator = "$eq";
|
909
|
-
// value = val.filter;
|
910
|
-
// break;
|
911
|
-
|
912
|
-
// case "notEqual":
|
913
|
-
// operator = "$ne";
|
914
|
-
// value = val.filter;
|
915
|
-
// break;
|
916
|
-
|
917
|
-
// case "lessThanOrEqual":
|
918
|
-
// operator = "$lte";
|
919
|
-
// value = val.filter;
|
920
|
-
// break;
|
921
|
-
|
922
|
-
// case "greaterThanOrEqual":
|
923
|
-
// operator = "$gte";
|
924
|
-
// value = val.filter;
|
925
|
-
// break;
|
926
|
-
|
927
|
-
// case "lessThan":
|
928
|
-
// operator = "$lt";
|
929
|
-
// value = val.filter;
|
930
|
-
// break;
|
931
|
-
|
932
|
-
// case "greaterThan":
|
933
|
-
// operator = "$gt";
|
934
|
-
// value = val.filter;
|
935
|
-
// break;
|
936
|
-
|
937
|
-
// case "blank":
|
938
|
-
// operator = "$eq";
|
939
|
-
// value = 0;
|
940
|
-
// break;
|
941
|
-
|
942
|
-
// case "notBlank":
|
943
|
-
// operator = "$ne";
|
944
|
-
// value = 0;
|
945
|
-
// break;
|
946
|
-
|
947
|
-
// case "inRange":
|
948
|
-
// operator = "$gte";
|
949
|
-
// value = val.filter;
|
950
|
-
// operator_to = "$lte";
|
951
|
-
// value_to = val.filterTo;
|
952
|
-
// break;
|
953
|
-
|
954
|
-
// default:
|
955
|
-
// operator = "$eq";
|
956
|
-
// value = val.filter;
|
957
|
-
// }
|
958
|
-
// }
|
959
|
-
// if (!opt.selector[field_name]) {
|
960
|
-
// opt.selector[field_name] = {};
|
961
|
-
// }
|
962
|
-
// if (!opt.selector[field_name][condition]) {
|
963
|
-
// opt.selector[field_name][condition] = [];
|
964
|
-
// }
|
965
|
-
// opt.selector[field_name][condition].push({
|
966
|
-
// [operator]: value,
|
967
|
-
// });
|
968
|
-
|
969
|
-
// if (operator_to) {
|
970
|
-
// opt.selector[field_name][condition].push({
|
971
|
-
// [operator_to]: value_to,
|
972
|
-
// });
|
973
|
-
// }
|
974
|
-
// };
|
975
|
-
|
976
|
-
// if (!val.condition1) {
|
977
|
-
// make_selector(val);
|
978
|
-
// } else {
|
979
|
-
// condition = "$" + val.operator.toLowerCase();
|
980
|
-
// make_selector(val.condition1);
|
981
|
-
// make_selector(val.condition2);
|
982
|
-
// }
|
983
|
-
// }
|
984
|
-
// }
|
985
|
-
|
986
|
-
// if (e.total_fields_info) {
|
987
|
-
// fields = [];
|
988
|
-
// for (const [key, val] of Object.entries(
|
989
|
-
// JSON.parse(e.total_fields_info)
|
990
|
-
// )) {
|
991
|
-
// var field_name = val.field_id;
|
992
|
-
|
993
|
-
// fields.push(field_name);
|
994
|
-
// }
|
995
|
-
// opt.fields = fields;
|
996
|
-
// }
|
997
|
-
// // fix names
|
998
|
-
|
999
|
-
// for (const [key, val] of Object.entries(opt.fields)) {
|
1000
|
-
// opt.fields[key] = "udfData.data." + val;
|
1001
|
-
// }
|
1002
|
-
// if (!e?.sort_fields?.length) {
|
1003
|
-
// // added 2021 09 10
|
1004
|
-
// if (opt.sort) {
|
1005
|
-
// for (const [key, val] of Object.entries(opt.sort)) {
|
1006
|
-
// opt.sort[key] = {
|
1007
|
-
// ["udfData.data." + val]: e.sortOrder === "des" ? "desc" : "asc",
|
1008
|
-
// };
|
1009
|
-
// }
|
1010
|
-
// }
|
1011
|
-
// }
|
1012
|
-
|
1013
|
-
// var selector_new = {};
|
1014
|
-
|
1015
|
-
// for (const [key, val] of Object.entries(opt.selector)) {
|
1016
|
-
// selector_new["udfData.data." + key] = val;
|
1017
|
-
// }
|
1018
|
-
|
1019
|
-
// if (e.viewDbQuery) {
|
1020
|
-
// for (const [key, val] of Object.entries(table_obj.tableFields)) {
|
1021
|
-
// if (e.viewDbQuery.includes(val.id)) {
|
1022
|
-
// const replacer = new RegExp(val.id, "g");
|
1023
|
-
// e.viewDbQuery = e.viewDbQuery.replace(
|
1024
|
-
// replacer,
|
1025
|
-
// "udfData.data." + val.data.field_id
|
1026
|
-
// );
|
1027
|
-
// }
|
1028
|
-
// }
|
1029
|
-
|
1030
|
-
// let viewDbQuery = JSON.parse(e.viewDbQuery.replace(/\\/g, ""));
|
1031
|
-
|
1032
|
-
// for (const [key, val] of Object.entries(viewDbQuery)) {
|
1033
|
-
// selector_new[key] = val;
|
1034
|
-
// }
|
1035
|
-
// }
|
1036
|
-
|
1037
|
-
// opt.selector = selector_new;
|
1038
|
-
// opt.selector["udfData.udffileid"] = e.table_id;
|
1039
|
-
// opt.selector.stat = e.archived ? 4 : 3;
|
1040
|
-
|
1041
|
-
// opt.fields.push("_id");
|
1042
|
-
// opt.fields.push("_rev");
|
1043
|
-
|
1044
|
-
// if (e.selector) {
|
1045
|
-
// opt.selector = { ...e.selector, ...opt.selector };
|
1046
|
-
// }
|
1047
|
-
|
1048
725
|
// xuda
|
1049
726
|
|
1050
727
|
try {
|
@@ -1082,7 +759,16 @@ const query_db = async function (e, db, table_obj) {
|
|
1082
759
|
|
1083
760
|
mango_index_obj = {
|
1084
761
|
index: {
|
1085
|
-
fields:
|
762
|
+
fields: Object.keys(
|
763
|
+
_.reduce(
|
764
|
+
opt.sort,
|
765
|
+
(ret, val) => {
|
766
|
+
ret[Object.keys(val)[0]] = val;
|
767
|
+
return ret;
|
768
|
+
},
|
769
|
+
opt.selector
|
770
|
+
)
|
771
|
+
),
|
1086
772
|
},
|
1087
773
|
name: index_name,
|
1088
774
|
ddoc: `mango_index_table_${e.table_id}`,
|
@@ -1090,6 +776,10 @@ const query_db = async function (e, db, table_obj) {
|
|
1090
776
|
|
1091
777
|
try {
|
1092
778
|
const result = await db.createIndex(mango_index_obj);
|
779
|
+
db.on("indexing", function (event) {
|
780
|
+
// called when indexes are updated
|
781
|
+
console.log("indexes event", event);
|
782
|
+
});
|
1093
783
|
|
1094
784
|
const doc = await db.find(opt);
|
1095
785
|
return await done(doc);
|
@@ -1110,11 +800,11 @@ const query_db = async function (e, db, table_obj) {
|
|
1110
800
|
var skip = 0;
|
1111
801
|
|
1112
802
|
if (e.limit) {
|
1113
|
-
limit = e.
|
803
|
+
limit = e.limit;
|
1114
804
|
}
|
1115
805
|
|
1116
|
-
if (e.
|
1117
|
-
skip = e.
|
806
|
+
if (e.skip) {
|
807
|
+
skip = e.skip;
|
1118
808
|
}
|
1119
809
|
|
1120
810
|
var view_opt = undefined;
|