blixify-server 0.3.1 → 0.3.2
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;AAiJD;;;;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;;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;
|
|
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;AAiJD;;;;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;;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;IAiO5B,QAAQ,QAAe,GAAG,OAAO,GAAG;;;;;mBAgQlC;IAEF,IAAI,YAgFF;CACH"}
|
|
@@ -1089,13 +1089,15 @@ class MongoWrapper {
|
|
|
1089
1089
|
handleBuildPipeline(req) {
|
|
1090
1090
|
const pipelineList = [];
|
|
1091
1091
|
const addedForeignLookups = new Map();
|
|
1092
|
+
const addedSpaceReferences = new Set();
|
|
1092
1093
|
const { query, sort, cursor, limit, stopLimit, pipeline, uniqueLabel } = req.body;
|
|
1093
1094
|
try {
|
|
1094
1095
|
if (Array.isArray(pipeline) && pipeline.length > 0) {
|
|
1095
1096
|
pipeline.forEach((link) => {
|
|
1096
|
-
const { condition, referenceSpaceLabel, spaceReferenceId, spaceReferenceAs,
|
|
1097
|
+
const { condition, referenceSpaceLabel, spaceReferenceId, spaceReferenceAs, referenceSort, referenceFirstItem, referenceLimit, } = link;
|
|
1097
1098
|
if (spaceReferenceId) {
|
|
1098
1099
|
const defaultReferenceAs = spaceReferenceAs || "linkedData";
|
|
1100
|
+
addedSpaceReferences.add(defaultReferenceAs);
|
|
1099
1101
|
const lookupStage = {
|
|
1100
1102
|
$lookup: {
|
|
1101
1103
|
from: spaceReferenceId,
|
|
@@ -1157,51 +1159,50 @@ class MongoWrapper {
|
|
|
1157
1159
|
});
|
|
1158
1160
|
lookupStage.$lookup.pipeline.push(matchStage);
|
|
1159
1161
|
}
|
|
1160
|
-
pipelineList.push(lookupStage);
|
|
1161
1162
|
if (referenceSort && referenceSort.sortId) {
|
|
1162
|
-
|
|
1163
|
+
const sortStage = {
|
|
1163
1164
|
$sort: {
|
|
1164
|
-
[
|
|
1165
|
+
[referenceSort.sortId]: referenceSort.type === "asc" ? 1 : -1,
|
|
1165
1166
|
},
|
|
1166
|
-
}
|
|
1167
|
+
};
|
|
1168
|
+
lookupStage.$lookup.pipeline.push(sortStage);
|
|
1167
1169
|
}
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
}
|
|
1170
|
+
if (referenceLimit) {
|
|
1171
|
+
const limitStage = {
|
|
1172
|
+
$limit: referenceLimit,
|
|
1173
|
+
};
|
|
1174
|
+
lookupStage.$lookup.pipeline.push(limitStage);
|
|
1175
|
+
}
|
|
1176
|
+
pipelineList.push(lookupStage);
|
|
1174
1177
|
if (referenceSpaceLabel && referenceSpaceLabel.length > 0) {
|
|
1175
1178
|
const addFieldsStage = { $addFields: {} };
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
+
if (referenceFirstItem) {
|
|
1180
|
+
pipelineList.push({
|
|
1181
|
+
$addFields: {
|
|
1182
|
+
[defaultReferenceAs]: {
|
|
1183
|
+
$first: {
|
|
1184
|
+
$ifNull: [`$${defaultReferenceAs}`, []],
|
|
1185
|
+
},
|
|
1186
|
+
},
|
|
1187
|
+
},
|
|
1188
|
+
});
|
|
1189
|
+
referenceSpaceLabel.forEach((field) => {
|
|
1190
|
+
addFieldsStage.$addFields[`${defaultReferenceAs}_${field}`] = `$${defaultReferenceAs}.${field}`;
|
|
1191
|
+
});
|
|
1192
|
+
}
|
|
1193
|
+
else {
|
|
1194
|
+
referenceSpaceLabel.forEach((field) => {
|
|
1195
|
+
addFieldsStage.$addFields[`${defaultReferenceAs}_${field}`] =
|
|
1196
|
+
{
|
|
1197
|
+
$map: {
|
|
1198
|
+
input: `$${defaultReferenceAs}`,
|
|
1199
|
+
in: `$$this.${field}`,
|
|
1200
|
+
},
|
|
1201
|
+
};
|
|
1202
|
+
});
|
|
1203
|
+
}
|
|
1179
1204
|
pipelineList.push(addFieldsStage);
|
|
1180
1205
|
}
|
|
1181
|
-
const groupStage = {
|
|
1182
|
-
$group: {
|
|
1183
|
-
_id: "$_id",
|
|
1184
|
-
originalData: { $first: "$$ROOT" },
|
|
1185
|
-
},
|
|
1186
|
-
};
|
|
1187
|
-
referenceSpaceLabel === null || referenceSpaceLabel === void 0 ? void 0 : referenceSpaceLabel.forEach((field) => {
|
|
1188
|
-
groupStage.$group[`${defaultReferenceAs}_${field}`] = {
|
|
1189
|
-
$push: `$${defaultReferenceAs}_${field}`,
|
|
1190
|
-
};
|
|
1191
|
-
});
|
|
1192
|
-
pipelineList.push(groupStage);
|
|
1193
|
-
// Merge back and remove 'originalData' and 'spaceReferenceAs'
|
|
1194
|
-
pipelineList.push({
|
|
1195
|
-
$replaceRoot: {
|
|
1196
|
-
newRoot: {
|
|
1197
|
-
$mergeObjects: ["$originalData", "$$ROOT"],
|
|
1198
|
-
},
|
|
1199
|
-
},
|
|
1200
|
-
});
|
|
1201
|
-
// Remove 'originalData' and 'spaceReferenceAs'
|
|
1202
|
-
pipelineList.push({
|
|
1203
|
-
$unset: ["originalData", spaceReferenceAs],
|
|
1204
|
-
});
|
|
1205
1206
|
}
|
|
1206
1207
|
});
|
|
1207
1208
|
}
|
|
@@ -1267,6 +1268,12 @@ class MongoWrapper {
|
|
|
1267
1268
|
$unset: [...foreignAliases],
|
|
1268
1269
|
});
|
|
1269
1270
|
}
|
|
1271
|
+
const spaceReferenceFields = Array.from(addedSpaceReferences);
|
|
1272
|
+
if (spaceReferenceFields.length > 0) {
|
|
1273
|
+
pipelineList.push({
|
|
1274
|
+
$unset: [...spaceReferenceFields],
|
|
1275
|
+
});
|
|
1276
|
+
}
|
|
1270
1277
|
}
|
|
1271
1278
|
catch (err) { }
|
|
1272
1279
|
return pipelineList;
|
|
@@ -35,16 +35,20 @@ interface PipelineCondition {
|
|
|
35
35
|
* Only mongoDB is supported
|
|
36
36
|
* - condition : Condition that is applied to the reference collection
|
|
37
37
|
* - referenceSpaceLabel : Label fields of the reference collection that we wants to show.
|
|
38
|
+
* - referenceSort : Sort of the reference collection
|
|
39
|
+
* - referenceFirstItem : To show the first item of the reference collection only
|
|
40
|
+
* - referenceLimit : Limit the number of items to show from the reference collection
|
|
38
41
|
* - spaceReferenceId : Reference collection ID
|
|
39
42
|
* - spaceReferenceAs : Alias of the reference collection (any name can be given)
|
|
40
|
-
* - sort : Sort of the reference collection
|
|
41
43
|
*/
|
|
42
44
|
export interface PipeLine {
|
|
43
45
|
condition: PipelineCondition[];
|
|
44
46
|
referenceSpaceLabel: string[];
|
|
47
|
+
referenceSort?: Sort;
|
|
48
|
+
referenceFirstItem?: boolean;
|
|
49
|
+
referenceLimit?: number;
|
|
45
50
|
spaceReferenceId: string;
|
|
46
51
|
spaceReferenceAs: string;
|
|
47
|
-
sort: Sort;
|
|
48
52
|
}
|
|
49
53
|
/**
|
|
50
54
|
* @SupportedAggregate
|
|
@@ -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,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL;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
|
|
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;IACxB,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL;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;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;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"}
|