blixify-server 0.3.26 → 0.3.27
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;
|
|
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;IAiT5B,QAAQ,QAAe,GAAG,OAAO,GAAG;;;;;mBA+ZlC;IAEF,IAAI,YAiFF;CACH"}
|
|
@@ -835,9 +835,13 @@ class MongoWrapper {
|
|
|
835
835
|
let queryFilter = {};
|
|
836
836
|
// INFO : Step 1 - Query
|
|
837
837
|
queryFilter = handleParseQueryFilter(queryList);
|
|
838
|
-
if (unionCollections &&
|
|
838
|
+
if (unionCollections &&
|
|
839
|
+
Array.isArray(unionCollections) &&
|
|
840
|
+
unionCollections.length > 0) {
|
|
839
841
|
if (aggregate) {
|
|
840
|
-
res.status(400).json({
|
|
842
|
+
res.status(400).json({
|
|
843
|
+
err: "Union operations cannot be combined with aggregate",
|
|
844
|
+
});
|
|
841
845
|
return;
|
|
842
846
|
}
|
|
843
847
|
const sort = (_v = req.body.sort) !== null && _v !== void 0 ? _v : { date: -1 };
|
|
@@ -847,14 +851,19 @@ class MongoWrapper {
|
|
|
847
851
|
// Build unionWith pipeline
|
|
848
852
|
unionCollections.forEach((collectionConfig, index) => {
|
|
849
853
|
const projectStage = {
|
|
850
|
-
$project: Object.assign({ _id: 1 }, collectionConfig.projection)
|
|
854
|
+
$project: Object.assign({ _id: 1 }, collectionConfig.projection),
|
|
851
855
|
};
|
|
852
|
-
//
|
|
856
|
+
// INFO: sourceLogic can be a string literal or a MongoDB expression object
|
|
853
857
|
if (collectionConfig.sourceLogic) {
|
|
854
|
-
projectStage.$project.source =
|
|
858
|
+
projectStage.$project.source =
|
|
859
|
+
typeof collectionConfig.sourceLogic === "string"
|
|
860
|
+
? { $literal: collectionConfig.sourceLogic }
|
|
861
|
+
: collectionConfig.sourceLogic;
|
|
855
862
|
}
|
|
856
863
|
else {
|
|
857
|
-
projectStage.$project.source = {
|
|
864
|
+
projectStage.$project.source = {
|
|
865
|
+
$literal: collectionConfig.source,
|
|
866
|
+
};
|
|
858
867
|
}
|
|
859
868
|
if (index === 0) {
|
|
860
869
|
if (queryList && queryList.length > 0) {
|
|
@@ -864,8 +873,13 @@ class MongoWrapper {
|
|
|
864
873
|
const collectionQueryFilter = handleParseQueryFilter(collectionConfig.query);
|
|
865
874
|
pipeline.push({ $match: collectionQueryFilter });
|
|
866
875
|
}
|
|
867
|
-
|
|
868
|
-
|
|
876
|
+
// INFO: addFields must be before $project so computed fields are available for sorting
|
|
877
|
+
if (collectionConfig.addFields) {
|
|
878
|
+
pipeline.push({ $addFields: collectionConfig.addFields });
|
|
879
|
+
// INFO: also include addFields keys in projection so they survive the $project stage
|
|
880
|
+
Object.keys(collectionConfig.addFields).forEach((key) => {
|
|
881
|
+
projectStage.$project[key] = 1;
|
|
882
|
+
});
|
|
869
883
|
}
|
|
870
884
|
pipeline.push(projectStage);
|
|
871
885
|
}
|
|
@@ -875,15 +889,20 @@ class MongoWrapper {
|
|
|
875
889
|
const collectionQueryFilter = handleParseQueryFilter(collectionConfig.query);
|
|
876
890
|
unionPipeline.push({ $match: collectionQueryFilter });
|
|
877
891
|
}
|
|
878
|
-
|
|
879
|
-
|
|
892
|
+
// INFO: addFields must be before $project so computed fields are available for sorting
|
|
893
|
+
if (collectionConfig.addFields) {
|
|
894
|
+
unionPipeline.push({ $addFields: collectionConfig.addFields });
|
|
895
|
+
// INFO: also include addFields keys in projection so they survive the $project stage
|
|
896
|
+
Object.keys(collectionConfig.addFields).forEach((key) => {
|
|
897
|
+
projectStage.$project[key] = 1;
|
|
898
|
+
});
|
|
880
899
|
}
|
|
881
900
|
unionPipeline.push(projectStage);
|
|
882
901
|
const unionStage = {
|
|
883
902
|
$unionWith: {
|
|
884
903
|
coll: collectionConfig.collection,
|
|
885
|
-
pipeline: unionPipeline
|
|
886
|
-
}
|
|
904
|
+
pipeline: unionPipeline,
|
|
905
|
+
},
|
|
887
906
|
};
|
|
888
907
|
pipeline.push(unionStage);
|
|
889
908
|
}
|
|
@@ -893,7 +912,8 @@ class MongoWrapper {
|
|
|
893
912
|
if (Array.isArray(sort)) {
|
|
894
913
|
sort.forEach((sortItem) => {
|
|
895
914
|
if (sortItem.sortId) {
|
|
896
|
-
sortStage.$sort[sortItem.sortId] =
|
|
915
|
+
sortStage.$sort[sortItem.sortId] =
|
|
916
|
+
sortItem.type === "asc" ? 1 : -1;
|
|
897
917
|
}
|
|
898
918
|
});
|
|
899
919
|
}
|
|
@@ -920,7 +940,9 @@ class MongoWrapper {
|
|
|
920
940
|
return stageKey !== "$skip" && stageKey !== "$limit";
|
|
921
941
|
});
|
|
922
942
|
countPipeline.push({ $count: "total" });
|
|
923
|
-
const countResult = yield mongoCollection
|
|
943
|
+
const countResult = yield mongoCollection
|
|
944
|
+
.aggregate(countPipeline)
|
|
945
|
+
.toArray();
|
|
924
946
|
const count = ((_y = countResult[0]) === null || _y === void 0 ? void 0 : _y.total) || 0;
|
|
925
947
|
let validOpsConfig = true;
|
|
926
948
|
dataList.map((eachData) => {
|
|
@@ -1260,7 +1282,8 @@ class MongoWrapper {
|
|
|
1260
1282
|
};
|
|
1261
1283
|
if (condition && condition.length > 0) {
|
|
1262
1284
|
condition.forEach((cond) => {
|
|
1263
|
-
lookupStage.$lookup.let[`local_${cond.fromColumnId}`] =
|
|
1285
|
+
lookupStage.$lookup.let[`local_${cond.fromColumnId}`] =
|
|
1286
|
+
`$${cond.fromColumnId}`;
|
|
1264
1287
|
});
|
|
1265
1288
|
const matchStage = {
|
|
1266
1289
|
$match: { $expr: { $and: [] } },
|
|
@@ -1339,7 +1362,8 @@ class MongoWrapper {
|
|
|
1339
1362
|
},
|
|
1340
1363
|
});
|
|
1341
1364
|
referenceSpaceLabel.forEach((field) => {
|
|
1342
|
-
addFieldsStage.$addFields[`${defaultReferenceAs}_${field}`] =
|
|
1365
|
+
addFieldsStage.$addFields[`${defaultReferenceAs}_${field}`] =
|
|
1366
|
+
`$${defaultReferenceAs}.${field}`;
|
|
1343
1367
|
});
|
|
1344
1368
|
}
|
|
1345
1369
|
else {
|