blixify-server 0.3.21 → 0.3.22

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;AA6JD;;;;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,aAAa,EAAE,MAAM,EAAE,CAAM;IAC7B,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,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI;IAgB3D,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,mBA4DD;IAEF,eAAe,QACR,GAAG,OACH,GAAG,yBACc,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC;;mBAqF5C;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;;mBAqKtC;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;;mBAsJ5C;IAEF,UAAU,QACH,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAwCtC;IAEF,mBAAmB,CAAC,GAAG,EAAE,GAAG;IAkP5B,QAAQ,QAAe,GAAG,OAAO,GAAG;;;;;mBAuQlC;IAEF,IAAI,YAgFF;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;AA6JD;;;;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,aAAa,EAAE,MAAM,EAAE,CAAM;IAC7B,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,aAAa,CAAC,EAAE,MAAM,EAAE,EACxB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI;IAgB3D,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,mBA4DD;IAEF,eAAe,QACR,GAAG,OACH,GAAG,yBACc,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC;;mBAqF5C;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;;mBAqKtC;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;;mBAsJ5C;IAEF,UAAU,QACH,GAAG,OACH,GAAG,qBACU,GAAG,KAAK,QAAQ,GAAG,CAAC;;mBAwCtC;IAEF,mBAAmB,CAAC,GAAG,EAAE,GAAG;IAgR5B,QAAQ,QAAe,GAAG,OAAO,GAAG;;;;;mBAwQlC;IAEF,IAAI,YAgFF;CACH"}
@@ -1011,6 +1011,7 @@ class MongoWrapper {
1011
1011
  return stageKey !== "$skip" && stageKey !== "$limit";
1012
1012
  });
1013
1013
  countPipeline.push({ $count: "total" });
1014
+ console.log(pipeline);
1014
1015
  const [dataList, countResult] = yield Promise.all([
1015
1016
  mongoCollection.aggregate(pipeline).toArray(),
1016
1017
  mongoCollection.aggregate(countPipeline).toArray(),
@@ -1137,7 +1138,7 @@ class MongoWrapper {
1137
1138
  const pipelineList = [];
1138
1139
  const addedForeignLookups = new Map();
1139
1140
  const addedSpaceReferences = new Set();
1140
- const { query, sort, cursor, limit, stopLimit, pipeline, uniqueLabel } = req.body;
1141
+ const { query, sort, cursor, limit, stopLimit, pipeline, uniqueLabel, sortBeforeFilter, } = req.body;
1141
1142
  try {
1142
1143
  if (Array.isArray(pipeline) && pipeline.length > 0) {
1143
1144
  pipeline.forEach((link) => {
@@ -1273,12 +1274,8 @@ class MongoWrapper {
1273
1274
  }
1274
1275
  });
1275
1276
  }
1276
- if (query && query.length > 0) {
1277
- const filter = handleParseQueryFilter(query);
1278
- pipelineList.push({ $match: filter });
1279
- }
1277
+ const sortStage = { $sort: {} };
1280
1278
  if (sort) {
1281
- const sortStage = { $sort: {} };
1282
1279
  const sortItems = Array.isArray(JSON.parse(JSON.stringify(sort)))
1283
1280
  ? sort
1284
1281
  : [sort];
@@ -1287,20 +1284,44 @@ class MongoWrapper {
1287
1284
  sortStage.$sort[sortItem.sortId] = sortItem.type === "asc" ? 1 : -1;
1288
1285
  }
1289
1286
  });
1287
+ }
1288
+ // INFO: If data is sorted then only filter, group must be before filter as well
1289
+ if (sortBeforeFilter) {
1290
1290
  if (Object.keys(sortStage.$sort).length > 0) {
1291
1291
  pipelineList.push(sortStage);
1292
1292
  }
1293
+ if (uniqueLabel) {
1294
+ pipelineList.push({
1295
+ $group: {
1296
+ _id: `$${uniqueLabel}`,
1297
+ doc: { $first: "$$ROOT" },
1298
+ },
1299
+ });
1300
+ pipelineList.push({
1301
+ $replaceRoot: { newRoot: "$doc" },
1302
+ });
1303
+ }
1293
1304
  }
1294
- if (uniqueLabel) {
1295
- pipelineList.push({
1296
- $group: {
1297
- _id: `$${uniqueLabel}`,
1298
- doc: { $first: "$$ROOT" },
1299
- },
1300
- });
1301
- pipelineList.push({
1302
- $replaceRoot: { newRoot: "$doc" },
1303
- });
1305
+ if (query && query.length > 0) {
1306
+ const filter = handleParseQueryFilter(query);
1307
+ pipelineList.push({ $match: filter });
1308
+ }
1309
+ // INFO: Default for mongoDB: filter then only sort
1310
+ if (!sortBeforeFilter) {
1311
+ if (Object.keys(sortStage.$sort).length > 0) {
1312
+ pipelineList.push(sortStage);
1313
+ }
1314
+ if (uniqueLabel) {
1315
+ pipelineList.push({
1316
+ $group: {
1317
+ _id: `$${uniqueLabel}`,
1318
+ doc: { $first: "$$ROOT" },
1319
+ },
1320
+ });
1321
+ pipelineList.push({
1322
+ $replaceRoot: { newRoot: "$doc" },
1323
+ });
1324
+ }
1304
1325
  }
1305
1326
  if (req.body.attributeIds && req.body.attributeIds.length > 0) {
1306
1327
  const projection = { _id: 1 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blixify-server",
3
- "version": "0.3.21",
3
+ "version": "0.3.22",
4
4
  "license": "MIT",
5
5
  "main": "dist/apis/index.js",
6
6
  "private": false,