blixify-server 0.3.0 → 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,
|
|
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"}
|
|
@@ -218,6 +218,8 @@ class MongoWrapper {
|
|
|
218
218
|
if (eachKey !== "_id" && !eachKey.startsWith("base"))
|
|
219
219
|
changeValueList.push(eachChangeValue);
|
|
220
220
|
});
|
|
221
|
+
if (type === "update" && changeValueList.length === 0)
|
|
222
|
+
return;
|
|
221
223
|
const logItem = {
|
|
222
224
|
_id: (0, uuid_1.v4)(),
|
|
223
225
|
type,
|
|
@@ -1087,13 +1089,15 @@ class MongoWrapper {
|
|
|
1087
1089
|
handleBuildPipeline(req) {
|
|
1088
1090
|
const pipelineList = [];
|
|
1089
1091
|
const addedForeignLookups = new Map();
|
|
1092
|
+
const addedSpaceReferences = new Set();
|
|
1090
1093
|
const { query, sort, cursor, limit, stopLimit, pipeline, uniqueLabel } = req.body;
|
|
1091
1094
|
try {
|
|
1092
1095
|
if (Array.isArray(pipeline) && pipeline.length > 0) {
|
|
1093
1096
|
pipeline.forEach((link) => {
|
|
1094
|
-
const { condition, referenceSpaceLabel, spaceReferenceId, spaceReferenceAs,
|
|
1097
|
+
const { condition, referenceSpaceLabel, spaceReferenceId, spaceReferenceAs, referenceSort, referenceFirstItem, referenceLimit, } = link;
|
|
1095
1098
|
if (spaceReferenceId) {
|
|
1096
1099
|
const defaultReferenceAs = spaceReferenceAs || "linkedData";
|
|
1100
|
+
addedSpaceReferences.add(defaultReferenceAs);
|
|
1097
1101
|
const lookupStage = {
|
|
1098
1102
|
$lookup: {
|
|
1099
1103
|
from: spaceReferenceId,
|
|
@@ -1155,51 +1159,50 @@ class MongoWrapper {
|
|
|
1155
1159
|
});
|
|
1156
1160
|
lookupStage.$lookup.pipeline.push(matchStage);
|
|
1157
1161
|
}
|
|
1158
|
-
pipelineList.push(lookupStage);
|
|
1159
1162
|
if (referenceSort && referenceSort.sortId) {
|
|
1160
|
-
|
|
1163
|
+
const sortStage = {
|
|
1161
1164
|
$sort: {
|
|
1162
|
-
[
|
|
1165
|
+
[referenceSort.sortId]: referenceSort.type === "asc" ? 1 : -1,
|
|
1163
1166
|
},
|
|
1164
|
-
}
|
|
1167
|
+
};
|
|
1168
|
+
lookupStage.$lookup.pipeline.push(sortStage);
|
|
1165
1169
|
}
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
}
|
|
1170
|
+
if (referenceLimit) {
|
|
1171
|
+
const limitStage = {
|
|
1172
|
+
$limit: referenceLimit,
|
|
1173
|
+
};
|
|
1174
|
+
lookupStage.$lookup.pipeline.push(limitStage);
|
|
1175
|
+
}
|
|
1176
|
+
pipelineList.push(lookupStage);
|
|
1172
1177
|
if (referenceSpaceLabel && referenceSpaceLabel.length > 0) {
|
|
1173
1178
|
const addFieldsStage = { $addFields: {} };
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
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
|
+
}
|
|
1177
1204
|
pipelineList.push(addFieldsStage);
|
|
1178
1205
|
}
|
|
1179
|
-
const groupStage = {
|
|
1180
|
-
$group: {
|
|
1181
|
-
_id: "$_id",
|
|
1182
|
-
originalData: { $first: "$$ROOT" },
|
|
1183
|
-
},
|
|
1184
|
-
};
|
|
1185
|
-
referenceSpaceLabel === null || referenceSpaceLabel === void 0 ? void 0 : referenceSpaceLabel.forEach((field) => {
|
|
1186
|
-
groupStage.$group[`${defaultReferenceAs}_${field}`] = {
|
|
1187
|
-
$push: `$${defaultReferenceAs}_${field}`,
|
|
1188
|
-
};
|
|
1189
|
-
});
|
|
1190
|
-
pipelineList.push(groupStage);
|
|
1191
|
-
// Merge back and remove 'originalData' and 'spaceReferenceAs'
|
|
1192
|
-
pipelineList.push({
|
|
1193
|
-
$replaceRoot: {
|
|
1194
|
-
newRoot: {
|
|
1195
|
-
$mergeObjects: ["$originalData", "$$ROOT"],
|
|
1196
|
-
},
|
|
1197
|
-
},
|
|
1198
|
-
});
|
|
1199
|
-
// Remove 'originalData' and 'spaceReferenceAs'
|
|
1200
|
-
pipelineList.push({
|
|
1201
|
-
$unset: ["originalData", spaceReferenceAs],
|
|
1202
|
-
});
|
|
1203
1206
|
}
|
|
1204
1207
|
});
|
|
1205
1208
|
}
|
|
@@ -1265,6 +1268,12 @@ class MongoWrapper {
|
|
|
1265
1268
|
$unset: [...foreignAliases],
|
|
1266
1269
|
});
|
|
1267
1270
|
}
|
|
1271
|
+
const spaceReferenceFields = Array.from(addedSpaceReferences);
|
|
1272
|
+
if (spaceReferenceFields.length > 0) {
|
|
1273
|
+
pipelineList.push({
|
|
1274
|
+
$unset: [...spaceReferenceFields],
|
|
1275
|
+
});
|
|
1276
|
+
}
|
|
1268
1277
|
}
|
|
1269
1278
|
catch (err) { }
|
|
1270
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"}
|