drapcode-utility 1.3.0 → 1.3.1

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.
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -35,10 +35,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
39
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
40
- to[j] = from[i];
41
- return to;
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
40
+ if (ar || !(i in from)) {
41
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
42
+ ar[i] = from[i];
43
+ }
44
+ }
45
+ return to.concat(ar || Array.prototype.slice.call(from));
42
46
  };
43
47
  var __importDefault = (this && this.__importDefault) || function (mod) {
44
48
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -49,12 +53,14 @@ var moment_1 = __importDefault(require("moment"));
49
53
  var drapcode_constant_1 = require("drapcode-constant");
50
54
  var date_util_1 = require("./date-util");
51
55
  var util_1 = require("./util");
52
- var queryParser = function (collectionName, query, constants, externalParams, currentUser, timezone, searchObj, refCollectionFieldsInItems, searchQueryTypeObj, currentTenant) {
56
+ var prepare_query_1 = require("./prepare-query");
57
+ var queryParser = function (collectionName, query, constants, externalParams, currentUser, timezone, searchObj, refCollectionFieldsInItems, searchQueryTypeObj, currentTenant, lookupConfig) {
53
58
  if (currentUser === void 0) { currentUser = {}; }
54
59
  if (searchObj === void 0) { searchObj = null; }
55
60
  if (refCollectionFieldsInItems === void 0) { refCollectionFieldsInItems = null; }
56
61
  if (searchQueryTypeObj === void 0) { searchQueryTypeObj = {}; }
57
62
  if (currentTenant === void 0) { currentTenant = {}; }
63
+ if (lookupConfig === void 0) { lookupConfig = []; }
58
64
  return __awaiter(void 0, void 0, void 0, function () {
59
65
  var filterQuery, aggregateQuery, queryStr, searchQueryObj, _a, searchAggregateQuery, likeQuery, finalQuery, _b, searchAggregateQuery, likeQuery, projection, finder, sortBy, orderBy, offset, limit, direction, str;
60
66
  var _c, _d;
@@ -85,7 +91,7 @@ var queryParser = function (collectionName, query, constants, externalParams, cu
85
91
  searchQueryObj = null;
86
92
  if (searchObj) {
87
93
  _a = getSearchObjQuery(searchObj, searchQueryTypeObj, timezone), searchAggregateQuery = _a.searchAggregateQuery, likeQuery = _a.likeQuery;
88
- aggregateQuery = __spreadArray(__spreadArray([], aggregateQuery), searchAggregateQuery);
94
+ aggregateQuery = __spreadArray(__spreadArray([], aggregateQuery, true), searchAggregateQuery, true);
89
95
  console.log("likeQuery after getSearchObjQuery", JSON.stringify(likeQuery));
90
96
  if (likeQuery && likeQuery.length > 0) {
91
97
  searchQueryObj = likeQuery;
@@ -103,105 +109,25 @@ var queryParser = function (collectionName, query, constants, externalParams, cu
103
109
  else if (searchObj) {
104
110
  console.log("I donot have filter query");
105
111
  _b = getSearchObjQuery(searchObj, searchQueryTypeObj, timezone), searchAggregateQuery = _b.searchAggregateQuery, likeQuery = _b.likeQuery;
106
- aggregateQuery = __spreadArray(__spreadArray([], aggregateQuery), searchAggregateQuery);
112
+ aggregateQuery = __spreadArray(__spreadArray([], aggregateQuery, true), searchAggregateQuery, true);
107
113
  if (likeQuery.length) {
108
- // aggregateQuery.push({ $match: { $or: likeQuery } });
109
114
  aggregateQuery.push({ $match: { $and: likeQuery } });
110
115
  }
111
116
  }
112
117
  console.log("aggregateQuery", JSON.stringify(aggregateQuery));
113
118
  console.log("==> query", query);
119
+ console.log("lookupConfig", lookupConfig);
114
120
  projection = mongoSelectQuery(query);
115
121
  finder = query.finder, sortBy = query.sortBy, orderBy = query.orderBy;
116
122
  if (!(finder != "COUNT" && refCollectionFieldsInItems)) return [3 /*break*/, 2];
117
123
  return [4 /*yield*/, Promise.all(refCollectionFieldsInItems.map(function (field) {
118
- var _a, _b, _c;
119
- if (["reference", "multi_reference", "belongsTo"].includes(field.type)) {
120
- var collectionName_1 = field.refCollection
121
- ? field.refCollection["collectionName"]
122
- : null;
123
- if (collectionName_1) {
124
- if (field.type === "belongsTo") {
125
- aggregateQuery.push({
126
- $lookup: {
127
- from: "" + collectionName_1,
128
- localField: field.fieldName,
129
- foreignField: "uuid",
130
- as: field.fieldName,
131
- },
132
- });
133
- aggregateQuery.push({
134
- $addFields: (_a = {},
135
- _a["_$belongsToMetaData"] = field,
136
- _a),
137
- });
138
- }
139
- else {
140
- aggregateQuery.push({
141
- $lookup: {
142
- from: "" + collectionName_1,
143
- let: (_b = {}, _b["" + field.fieldName] = "$" + field.fieldName, _b),
144
- pipeline: [
145
- {
146
- $match: {
147
- $expr: {
148
- $in: [
149
- "$uuid",
150
- {
151
- $cond: {
152
- if: {
153
- $in: ["$$" + field.fieldName, ["", null]],
154
- },
155
- then: [],
156
- else: { $ifNull: ["$$" + field.fieldName, []] },
157
- },
158
- },
159
- ],
160
- },
161
- },
162
- },
163
- {
164
- $lookup: {
165
- from: "user",
166
- let: { createdBy: "$createdBy" },
167
- pipeline: [
168
- {
169
- $match: {
170
- $expr: { $eq: ["$uuid", "$$createdBy"] },
171
- },
172
- },
173
- { $project: { _id: 0, password: 0 } },
174
- ],
175
- as: "createdBy",
176
- },
177
- },
178
- ],
179
- as: field.fieldName,
180
- },
181
- });
182
- }
183
- }
184
- }
185
- if (field.type === "createdBy")
186
- aggregateQuery.push({
187
- $lookup: {
188
- from: "user",
189
- let: (_c = {}, _c["" + field.fieldName] = "$" + field.fieldName, _c),
190
- pipeline: [
191
- {
192
- $match: { $expr: { $eq: ["$uuid", "$$" + field.fieldName] } },
193
- },
194
- { $project: { _id: 0, password: 0 } },
195
- ],
196
- as: field.fieldName,
197
- },
198
- });
124
+ return (0, prepare_query_1.commonLookupSetting)(field, lookupConfig, aggregateQuery);
199
125
  }))];
200
126
  case 1:
201
127
  _e.sent();
202
128
  _e.label = 2;
203
129
  case 2:
204
- if (finder != "COUNT" && !util_1.isEmpty(projection)) {
130
+ if (finder != "COUNT" && !(0, util_1.isEmpty)(projection)) {
205
131
  aggregateQuery.push({ $project: projection });
206
132
  }
207
133
  if (finder === "COUNT") {
@@ -222,8 +148,8 @@ var queryParser = function (collectionName, query, constants, externalParams, cu
222
148
  }
223
149
  console.log("==> aggregateQuery", aggregateQuery);
224
150
  console.log("==> aggregateQuery", JSON.stringify(aggregateQuery));
225
- queryStr = ".aggregate(" + JSON.stringify(aggregateQuery) + ", { collation: { locale: \"en\" } })";
226
- str = "req.db.collection('" + collectionName + "')" + queryStr;
151
+ queryStr = ".aggregate(".concat(JSON.stringify(aggregateQuery), ", { collation: { locale: \"en\" } })");
152
+ str = "req.db.collection('".concat(collectionName, "')").concat(queryStr);
227
153
  str += ".toArray()";
228
154
  return [2 /*return*/, str];
229
155
  }
@@ -263,7 +189,7 @@ var mongoFilterQuery = function (query, externalParams, constants, currentUser,
263
189
  filterQuery[lastKey].push(mongoQuery);
264
190
  }
265
191
  else {
266
- filterQuery["$or" + index] = [mongoQuery];
192
+ filterQuery["$or".concat(index)] = [mongoQuery];
267
193
  }
268
194
  }
269
195
  else if (queryObj.conjunctionType == "AND") {
@@ -272,11 +198,11 @@ var mongoFilterQuery = function (query, externalParams, constants, currentUser,
272
198
  filterQuery[lastKey].push(mongoQuery);
273
199
  }
274
200
  else {
275
- filterQuery["$and" + index] = [mongoQuery];
201
+ filterQuery["$and".concat(index)] = [mongoQuery];
276
202
  }
277
203
  }
278
204
  else {
279
- filterQuery["$or" + index] = [mongoQuery];
205
+ filterQuery["$or".concat(index)] = [mongoQuery];
280
206
  }
281
207
  });
282
208
  console.log("==> *** filterQuery mongoFilterQuery :>> ", filterQuery);
@@ -295,15 +221,15 @@ var mongoSelectQuery = function (query) {
295
221
  if (fieldsInclude[0] === "*") {
296
222
  fieldsExclude.map(function (field) {
297
223
  if (field)
298
- return (projection["" + field] = 0);
224
+ return (projection["".concat(field)] = 0);
299
225
  });
300
226
  }
301
227
  else {
302
228
  if (["FIND_ALL", "FIND"].includes(finder))
303
- fieldsInclude = util_1.processFieldsInlcude(fieldsInclude);
229
+ fieldsInclude = (0, util_1.processFieldsInlcude)(fieldsInclude);
304
230
  fieldsInclude.map(function (field) {
305
231
  if (field)
306
- return (projection["" + field] = 1);
232
+ return (projection["".concat(field)] = 1);
307
233
  });
308
234
  }
309
235
  return projection;
@@ -335,7 +261,7 @@ var queryToMongo = function (query, requiredExternal, externalParams, constants,
335
261
  //TODO: In case of this, we assign some random string to avoid resulting all values
336
262
  //TODO: This is use case in Spot Factor Project, where a new user with blank value able to see all records
337
263
  //TODO: Discussed on meet
338
- fieldValue = "random_string_since_field_not_present_" + moment_1.default(1318874398806).valueOf();
264
+ fieldValue = "random_string_since_field_not_present_".concat((0, moment_1.default)(1318874398806).valueOf());
339
265
  }
340
266
  console.log("fieldValue queryToMongo 1", fieldValue);
341
267
  var isDate = checkDate(fieldValue);
@@ -403,7 +329,7 @@ var queryToMongo = function (query, requiredExternal, externalParams, constants,
403
329
  return _q = {},
404
330
  _q[field] = {
405
331
  $gte: fieldValue,
406
- $lt: date_util_1.nextDayDate(fieldValue),
332
+ $lt: (0, date_util_1.nextDayDate)(fieldValue),
407
333
  },
408
334
  _q;
409
335
  // Todo: Remove this if works properly
@@ -459,7 +385,7 @@ var queryToMongo = function (query, requiredExternal, externalParams, constants,
459
385
  },
460
386
  _y;
461
387
  if (key == drapcode_constant_1.BETWEEN) {
462
- var _0 = exports.getMinMaxValue(fieldValue), startValue = _0.startValue, endValue = _0.endValue, isInteger = _0.isInteger;
388
+ var _0 = (0, exports.getMinMaxValue)(fieldValue), startValue = _0.startValue, endValue = _0.endValue, isInteger = _0.isInteger;
463
389
  return _z = {},
464
390
  _z[field] = {
465
391
  $gte: isInteger ? +startValue : startValue,
@@ -528,13 +454,13 @@ var replaceExternalParams = function (query, requiredExternal, externalParams, c
528
454
  return valueList_1;
529
455
  }
530
456
  if (key === drapcode_constant_1.BETWEEN) {
531
- var _a = exports.getMinMaxValue(value), startValue_1 = _a.startValue, endValue_1 = _a.endValue, isInteger = _a.isInteger;
457
+ var _a = (0, exports.getMinMaxValue)(value), startValue_1 = _a.startValue, endValue_1 = _a.endValue, isInteger = _a.isInteger;
532
458
  if (requiredExternal) {
533
- startValue_1 = "" + externalParams[startValue_1];
534
- endValue_1 = "" + externalParams[endValue_1];
459
+ startValue_1 = "".concat(externalParams[startValue_1]);
460
+ endValue_1 = "".concat(externalParams[endValue_1]);
535
461
  }
536
462
  else {
537
- if (__spreadArray([drapcode_constant_1.CURRENT_USER], drapcode_constant_1.DateConstant).some(function (cnst) {
463
+ if (__spreadArray([drapcode_constant_1.CURRENT_USER], drapcode_constant_1.DateConstant, true).some(function (cnst) {
538
464
  return startValue_1.includes(cnst);
539
465
  })) {
540
466
  startValue_1 = getValueOfProjectConstant(startValue_1, currentUser, timezone);
@@ -542,7 +468,7 @@ var replaceExternalParams = function (query, requiredExternal, externalParams, c
542
468
  else {
543
469
  startValue_1 = constants.filter(function (constant) { return constant.name == startValue_1; });
544
470
  }
545
- if (__spreadArray([drapcode_constant_1.CURRENT_USER], drapcode_constant_1.DateConstant).some(function (cnst) { return endValue_1.includes(cnst); })) {
471
+ if (__spreadArray([drapcode_constant_1.CURRENT_USER], drapcode_constant_1.DateConstant, true).some(function (cnst) { return endValue_1.includes(cnst); })) {
546
472
  endValue_1 = getValueOfProjectConstant(endValue_1, currentUser, timezone);
547
473
  }
548
474
  else {
@@ -558,10 +484,10 @@ var replaceExternalParams = function (query, requiredExternal, externalParams, c
558
484
  }
559
485
  //TODO: Need to figure out the params should be treated as number/string
560
486
  if (!isNaN(startValue_1)) {
561
- return startValue_1 + "---" + endValue_1 + "^";
487
+ return "".concat(startValue_1, "---").concat(endValue_1, "^");
562
488
  }
563
489
  else
564
- return startValue_1 + "---" + endValue_1;
490
+ return "".concat(startValue_1, "---").concat(endValue_1);
565
491
  }
566
492
  if (value.includes(drapcode_constant_1.CURRENT_USER)) {
567
493
  if (value === drapcode_constant_1.CURRENT_USER) {
@@ -652,18 +578,18 @@ var replaceExternalParams = function (query, requiredExternal, externalParams, c
652
578
  if (drapcode_constant_1.DateConstant.some(function (cnst) { return value.includes(cnst); })) {
653
579
  return getValueOfProjectConstant(value, {}, timezone);
654
580
  }
655
- if (exports.isEntityInCondition(value)) {
581
+ if ((0, exports.isEntityInCondition)(value)) {
656
582
  var key_1 = value.replace("ENTITY::", "");
657
583
  return externalParams[key_1] ? externalParams[key_1] : "";
658
584
  }
659
585
  //TODO: This is just to confirm if external then it should be get from externalParams
660
586
  if (requiredExternal) {
661
587
  //TODO: Value returns from here undefined.
662
- var externalParamValue = externalParams["" + value];
588
+ var externalParamValue = externalParams["".concat(value)];
663
589
  if (!isNaN(externalParamValue)) {
664
590
  return +externalParamValue;
665
591
  }
666
- return externalParams["" + value];
592
+ return externalParams["".concat(value)];
667
593
  }
668
594
  var constantArr = constants.filter(function (constant) { return constant.name == value; });
669
595
  return constantArr.length ? "" + constantArr[0].value : "";
@@ -694,11 +620,11 @@ var getValueOfProjectConstant = function (value, currentUser, timezone) {
694
620
  if (value === drapcode_constant_1.CURRENT_USER)
695
621
  return currentUser["uuid"];
696
622
  if (value === drapcode_constant_1.CURRENT_DATE)
697
- result = date_util_1.createLoggerDateFormat(timezone);
623
+ result = (0, date_util_1.createLoggerDateFormat)(timezone);
698
624
  if ([drapcode_constant_1.CURRENT_TIME, drapcode_constant_1.CURRENT_DATE_TIME].includes(value))
699
- result = date_util_1.createLogsDateFormat(timezone);
625
+ result = (0, date_util_1.createLogsDateFormat)(timezone);
700
626
  if (drapcode_constant_1.DateTimeUnit.some(function (cnst) { return value.includes(cnst); }))
701
- result = date_util_1.getDateValue(value, timezone);
627
+ result = (0, date_util_1.getDateValue)(value, timezone);
702
628
  return result;
703
629
  };
704
630
  var getSearchObjQuery = function (searchObj, searchQueryTypeObj, timezone) {
@@ -714,11 +640,11 @@ var getSearchObjQuery = function (searchObj, searchQueryTypeObj, timezone) {
714
640
  // if input is string and db field type is boolean
715
641
  searchAggregateQuery.push({
716
642
  $addFields: (_b = {},
717
- _b["_" + key] = "$" + key,
643
+ _b["_".concat(key)] = "$".concat(key),
718
644
  _b),
719
645
  });
720
646
  likeQuery.push((_c = {},
721
- _c["_" + key] = toBoolean(value),
647
+ _c["_".concat(key)] = toBoolean(value),
722
648
  _c));
723
649
  }
724
650
  else if ([
@@ -730,22 +656,22 @@ var getSearchObjQuery = function (searchObj, searchQueryTypeObj, timezone) {
730
656
  // if input is string and db field type is array
731
657
  searchAggregateQuery.push({
732
658
  $addFields: (_d = {},
733
- _d["_" + key] = "$" + key,
659
+ _d["_".concat(key)] = "$".concat(key),
734
660
  _d),
735
661
  });
736
662
  likeQuery.push((_e = {},
737
- _e["_" + key] = { $all: [value] },
663
+ _e["_".concat(key)] = { $all: [value] },
738
664
  _e));
739
665
  }
740
666
  else if (searchQueryTypeKey === "tel") {
741
667
  // handling value when db field type is tel
742
668
  searchAggregateQuery.push({
743
669
  $addFields: (_f = {},
744
- _f["_" + key] = { $toString: "$" + key },
670
+ _f["_".concat(key)] = { $toString: "$".concat(key) },
745
671
  _f),
746
672
  });
747
673
  likeQuery.push((_g = {},
748
- _g["_" + key] = {
674
+ _g["_".concat(key)] = {
749
675
  $regex: value.startsWith("+") ? value.replace("+", "") : value,
750
676
  $options: "i",
751
677
  },
@@ -755,11 +681,11 @@ var getSearchObjQuery = function (searchObj, searchQueryTypeObj, timezone) {
755
681
  // handling value when db field type is Double/Int
756
682
  searchAggregateQuery.push({
757
683
  $addFields: (_h = {},
758
- _h["_" + key] = { $toString: { $toLong: "$" + key } },
684
+ _h["_".concat(key)] = { $toString: { $toLong: "$".concat(key) } },
759
685
  _h),
760
686
  });
761
687
  likeQuery.push((_j = {},
762
- _j["_" + key] = {
688
+ _j["_".concat(key)] = {
763
689
  $regex: value,
764
690
  $options: "i",
765
691
  },
@@ -771,20 +697,20 @@ var getSearchObjQuery = function (searchObj, searchQueryTypeObj, timezone) {
771
697
  fieldKey = fieldKey.replace("end_", "");
772
698
  searchAggregateQuery.push({
773
699
  $addFields: (_k = {},
774
- _k["_" + key] = { $toString: "$" + fieldKey },
700
+ _k["_".concat(key)] = { $toString: "$".concat(fieldKey) },
775
701
  _k),
776
702
  });
777
703
  if (key.startsWith("start_")) {
778
704
  likeQuery.push((_l = {},
779
- _l["_" + key] = {
780
- $gte: date_util_1.timezoneDateParse(value, false, true),
705
+ _l["_".concat(key)] = {
706
+ $gte: (0, date_util_1.timezoneDateParse)(value, false, true),
781
707
  },
782
708
  _l));
783
709
  }
784
710
  else if (key.startsWith("end_")) {
785
711
  likeQuery.push((_m = {},
786
- _m["_" + key] = {
787
- $lt: date_util_1.timezoneDateParse(value, true),
712
+ _m["_".concat(key)] = {
713
+ $lt: (0, date_util_1.timezoneDateParse)(value, true),
788
714
  },
789
715
  _m));
790
716
  }
@@ -795,11 +721,11 @@ var getSearchObjQuery = function (searchObj, searchQueryTypeObj, timezone) {
795
721
  // converting db field to string first
796
722
  searchAggregateQuery.push({
797
723
  $addFields: (_o = {},
798
- _o["_" + key] = { $toString: "$" + key },
724
+ _o["_".concat(key)] = { $toString: "$".concat(key) },
799
725
  _o),
800
726
  });
801
727
  likeQuery.push((_p = {},
802
- _p["_" + key] = {
728
+ _p["_".concat(key)] = {
803
729
  $regex: value,
804
730
  $options: "i",
805
731
  },
@@ -1 +1 @@
1
- export declare const queryParserNew: (collectionName: string, query: any, constants: any[], externalParams: any, currentUser: any, timezone: string, searchObj?: any, refCollectionFieldsInItems?: any, searchQueryTypeObj?: any) => Promise<string>;
1
+ export declare const queryParserNew: (collectionName: string, query: any, constants: any[], externalParams: any, currentUser: any, timezone: string, searchObj?: any, refCollectionFieldsInItems?: any, searchQueryTypeObj?: any, lookupConfig?: any) => Promise<string>;