blixify-server 0.2.14 → 0.2.15

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.
@@ -1 +1 @@
1
- {"version":3,"file":"mongoWrapper.d.ts","sourceRoot":"","sources":["../../src/apis/mongoWrapper.ts"],"names":[],"mappings":"AASA,OAAO,cAAc,MAAM,yBAAyB,CAAC;AAGrD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAsGD;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,EAAE,GAAG,CAAM;IAClB,UAAU,SAAM;IAChB,MAAM,UAAS;IACf,MAAM,EAAE,cAAc,CAQpB;IACF,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,SAAM;IACb,KAAK,SAAM;IACX,WAAW,EAAE,GAAG,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IAEX,YAAY,QAAS,GAAG,aAEtB;gBAGA,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,EACrD,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EACzC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI;IAe3D,UAAU,SAAU,GAAG,SAIrB;IAEF,aAAa,YACF,GAAG,QACN,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAC/B,GAAG,UACA;QACN,GAAG,CAAC,EAAE,GAAG,CAAC;QACV,GAAG,CAAC,EAAE,GAAG,CAAC;KACX,mBA8CD;IAEF,eAAe,QACR,GAAG,OACH,GAAG,yBACc,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC;;mBAyE5C;IAEF,UAAU,QACH,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAkDtC;IAEF,OAAO,QAAe,GAAG,OAAO,GAAG;;mBAuCjC;IAEF,eAAe,QACR,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAgKtC;IAEF,UAAU,QACH,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAqGtC;IAEF,eAAe,QACR,GAAG,OACH,GAAG,yBACc,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC;;mBA0I5C;IAEF,UAAU,QACH,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAwCtC;IAEF,mBAAmB,CAAC,GAAG,EAAE,GAAG;IAoM5B,QAAQ,QAAe,GAAG,OAAO,GAAG;;;;;mBAgQlC;IAEF,IAAI,YA+EF;CACH"}
1
+ {"version":3,"file":"mongoWrapper.d.ts","sourceRoot":"","sources":["../../src/apis/mongoWrapper.ts"],"names":[],"mappings":"AASA,OAAO,cAAc,MAAM,yBAAyB,CAAC;AAGrD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AA4GD;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,EAAE,GAAG,CAAM;IAClB,UAAU,SAAM;IAChB,MAAM,UAAS;IACf,MAAM,EAAE,cAAc,CAQpB;IACF,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,SAAM;IACb,KAAK,SAAM;IACX,WAAW,EAAE,GAAG,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IAEX,YAAY,QAAS,GAAG,aAEtB;gBAGA,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,EACrD,GAAG,EAAE,UAAU,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EACzC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI;IAe3D,UAAU,SAAU,GAAG,SAIrB;IAEF,aAAa,YACF,GAAG,QACN,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAC/B,GAAG,UACA;QACN,GAAG,CAAC,EAAE,GAAG,CAAC;QACV,GAAG,CAAC,EAAE,GAAG,CAAC;KACX,mBA8CD;IAEF,eAAe,QACR,GAAG,OACH,GAAG,yBACc,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC;;mBAyE5C;IAEF,UAAU,QACH,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAkDtC;IAEF,OAAO,QAAe,GAAG,OAAO,GAAG;;mBAuCjC;IAEF,eAAe,QACR,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAgKtC;IAEF,UAAU,QACH,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAqGtC;IAEF,eAAe,QACR,GAAG,OACH,GAAG,yBACc,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC;;mBA0I5C;IAEF,UAAU,QACH,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAwCtC;IAEF,mBAAmB,CAAC,GAAG,EAAE,GAAG;IAiL5B,QAAQ,QAAe,GAAG,OAAO,GAAG;;;;;mBAgQlC;IAEF,IAAI,YA+EF;CACH"}
@@ -19,98 +19,111 @@ const QueryModel_1 = require("../model/QueryModel");
19
19
  const utils_1 = require("./utils");
20
20
  const handleParseQueryFilter = (queryList, prefix) => {
21
21
  const queryFilter = {};
22
+ const queryGroupValues = {};
22
23
  if (queryList && queryList.length > 0) {
23
- queryList.forEach((eachQuery) => {
24
- const orConditions = [];
25
- if (eachQuery.type === "search") {
26
- if (eachQuery.searchIds && eachQuery.searchIds.length > 0) {
27
- eachQuery.searchIds.forEach((eachField) => {
28
- const mainField = prefix ? `${prefix}.${eachField}` : eachField;
29
- orConditions.push({
30
- [mainField]: {
31
- $regex: eachQuery.value
32
- .toString()
33
- .replace(/[.*+?^${}()|[\]\\]/g, "\\$&"),
34
- $options: "i",
35
- },
36
- });
37
- });
38
- }
39
- if (eachQuery.foreign &&
40
- eachQuery.foreign.searchFields &&
41
- eachQuery.foreign.searchFields.length > 0) {
42
- let foreignAlias = eachQuery.foreign.alias;
43
- if (!foreignAlias) {
44
- foreignAlias = eachQuery.foreign.localField;
45
- }
46
- if (prefix) {
47
- foreignAlias = `${prefix}.${foreignAlias}`;
48
- }
49
- eachQuery.foreign.searchFields.forEach((foreignField) => {
50
- orConditions.push({
51
- [`${foreignAlias}.${foreignField}`]: {
52
- $regex: eachQuery.value
53
- .toString()
54
- .replace(/[.*+?^${}()|[\]\\]/g, "\\$&"),
55
- $options: "i",
56
- },
57
- });
58
- });
59
- }
60
- }
61
- // For non-"search" types (like "=" or ">" etc.), use queryId.
62
- let queryId = eachQuery.queryId || "";
24
+ queryList.map((eachQuery) => {
25
+ var _a;
26
+ let queryId = (_a = eachQuery.queryId) !== null && _a !== void 0 ? _a : "";
63
27
  if (prefix)
64
28
  queryId = `${prefix}.${queryId}`;
29
+ const value = eachQuery.value;
30
+ const queryValues = {};
31
+ let orOption = false;
65
32
  switch (eachQuery.type) {
33
+ case "search":
34
+ if (eachQuery.searchIds && eachQuery.searchIds.length > 0) {
35
+ eachQuery.searchIds.map((eachSearchId) => {
36
+ orOption = true;
37
+ queryValues[eachSearchId] = {
38
+ $regex: `${(0, utils_1.handleSpecialWordsEscapeRegex)(value)}`,
39
+ $options: "i",
40
+ };
41
+ });
42
+ }
43
+ break;
66
44
  case "=":
67
- queryFilter[queryId] = eachQuery.value;
45
+ queryValues[queryId] = value;
68
46
  break;
69
47
  case "!=":
70
- queryFilter[queryId] = { $ne: eachQuery.value };
71
- break;
72
- case "in":
73
- queryFilter[queryId] = { $in: eachQuery.value };
48
+ queryValues[queryId] = {
49
+ $ne: value,
50
+ };
74
51
  break;
75
52
  case ">":
76
- queryFilter[queryId] = { $gt: eachQuery.value };
53
+ queryValues[queryId] = {
54
+ $gt: value,
55
+ };
77
56
  break;
78
57
  case "<":
79
- queryFilter[queryId] = { $lt: eachQuery.value };
80
- break;
81
- case "!in":
82
- queryFilter[queryId] = { $nin: eachQuery.value };
58
+ queryValues[queryId] = {
59
+ $lt: value,
60
+ };
83
61
  break;
84
62
  case "><":
85
- if (Array.isArray(eachQuery.value) && eachQuery.value.length >= 2) {
86
- queryFilter[queryId] = {
87
- [queryId]: {
88
- $gte: eachQuery.value[0],
89
- $lte: eachQuery.value[1],
90
- },
63
+ if (Array.isArray(value) && value.length >= 2) {
64
+ queryValues[queryId] = {
65
+ $gte: value[0],
66
+ $lte: value[1],
91
67
  };
92
68
  }
93
69
  break;
70
+ case "in":
71
+ queryValues[queryId] = {
72
+ $in: value,
73
+ };
74
+ break;
75
+ case "!in":
76
+ queryFilter[queryId] = {
77
+ $nin: value,
78
+ };
79
+ break;
94
80
  case "exists":
95
- queryFilter[queryId].push({
96
- $exists: eachQuery.value, // `true` if field should exist, `false` if field should not exist
97
- });
81
+ // Check if field exists or not
82
+ queryValues[queryId] = {
83
+ $exists: value, // `true` if field should exist, `false` if field should not exist
84
+ };
98
85
  break;
99
- // Handle other cases as needed.
100
86
  default:
101
87
  break;
102
88
  }
103
- // If we have collected OR conditions for this query, add them to the overall filter.
104
- if (orConditions.length > 0) {
105
- if (queryFilter["$or"]) {
106
- queryFilter["$or"] = queryFilter["$or"].concat(orConditions);
89
+ if (eachQuery.orQuery)
90
+ orOption = true;
91
+ //INFO : Delete Query Values as it's added outside
92
+ if (eachQuery.orQueryGroupId) {
93
+ const groupValue = queryValues[queryId];
94
+ if (groupValue) {
95
+ if (queryGroupValues[eachQuery.orQueryGroupId]) {
96
+ queryGroupValues[eachQuery.orQueryGroupId]["$and"].push({
97
+ [queryId]: queryValues[queryId],
98
+ });
99
+ }
100
+ else {
101
+ queryGroupValues[eachQuery.orQueryGroupId] = {
102
+ $and: [{ [queryId]: queryValues[queryId] }],
103
+ };
104
+ }
105
+ delete queryValues[queryId];
106
+ }
107
+ }
108
+ Object.keys(queryValues).map((eachKey) => {
109
+ if (orOption) {
110
+ if (queryFilter["$or"])
111
+ queryFilter["$or"].push({ [eachKey]: queryValues[eachKey] });
112
+ else
113
+ queryFilter["$or"] = [{ [eachKey]: queryValues[eachKey] }];
107
114
  }
108
115
  else {
109
- queryFilter["$or"] = orConditions;
116
+ queryFilter[eachKey] = queryValues[eachKey];
110
117
  }
111
- }
118
+ });
112
119
  });
113
120
  }
121
+ Object.keys(queryGroupValues).map((eachKey) => {
122
+ if (queryFilter["$or"])
123
+ queryFilter["$or"].push(queryGroupValues[eachKey]);
124
+ else
125
+ queryFilter["$or"] = [queryGroupValues[eachKey]];
126
+ });
114
127
  return queryFilter;
115
128
  };
116
129
  /**
@@ -1140,24 +1153,6 @@ class MongoWrapper {
1140
1153
  }
1141
1154
  });
1142
1155
  }
1143
- if (query && query.length > 0) {
1144
- query.forEach((q) => {
1145
- if (q.foreign) {
1146
- const alias = q.foreign.alias || q.foreign.localField;
1147
- if (!addedForeignLookups.has(alias)) {
1148
- pipelineList.push({
1149
- $lookup: {
1150
- from: q.foreign.collection,
1151
- localField: q.foreign.localField,
1152
- foreignField: q.foreign.foreignField,
1153
- as: alias,
1154
- },
1155
- });
1156
- addedForeignLookups.set(alias, true);
1157
- }
1158
- }
1159
- });
1160
- }
1161
1156
  if (query && query.length > 0) {
1162
1157
  const filter = handleParseQueryFilter(query);
1163
1158
  pipelineList.push({ $match: filter });
@@ -15,13 +15,6 @@ export interface Query {
15
15
  value: any;
16
16
  queryId?: string;
17
17
  searchIds?: string[];
18
- foreign?: {
19
- collection: string;
20
- localField: string;
21
- foreignField: string;
22
- searchFields: string[];
23
- alias?: string;
24
- };
25
18
  orQuery?: boolean;
26
19
  orQueryGroupId?: string;
27
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QueryModel.d.ts","sourceRoot":"","sources":["../../src/model/QueryModel.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC;IACzE,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,EAAE;YACP,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,EAAE,OAAO,CAAC;SAChB,CAAC;KACH,EAAE,CAAC;CACL;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,WAAY,cAAc,OAAO,GAAG,YAmC/D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,WACjB,cAAc,QAChB,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OACxC,GAAG,OACH,GAAG,YAyDT,CAAC"}
1
+ {"version":3,"file":"QueryModel.d.ts","sourceRoot":"","sources":["../../src/model/QueryModel.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC;IACzE,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,EAAE;YACP,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,EAAE,OAAO,CAAC;SAChB,CAAC;KACH,EAAE,CAAC;CACL;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,WAAY,cAAc,OAAO,GAAG,YAmC/D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,WACjB,cAAc,QAChB,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OACxC,GAAG,OACH,GAAG,YAyDT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blixify-server",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "license": "MIT",
5
5
  "main": "dist/apis/index.js",
6
6
  "private": false,