c2-mongoose 2.1.37 → 2.1.39
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.
package/dist/flow/CrudFlow.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ declare class CrudFlow<D> {
|
|
|
15
15
|
getOne(model: D, params?: any): Promise<D>;
|
|
16
16
|
get(id: string, pop?: string, sel?: string, session?: ClientSession): Promise<D>;
|
|
17
17
|
getById(id: string, session?: ClientSession): Promise<Partial<D>>;
|
|
18
|
-
sumBy(fieldToSum: any, fieldToGroup: any, addToSet?: any): Promise<any>;
|
|
18
|
+
sumBy(fieldToSum: any, fieldToGroup: any, addToSet?: any, session?: ClientSession): Promise<any>;
|
|
19
|
+
sumByAndPaging(fieldToSum: any, fieldToGroup: any, addToSet?: any): Promise<SearchResponse<any>>;
|
|
19
20
|
}
|
|
20
21
|
export default CrudFlow;
|
package/dist/flow/CrudFlow.js
CHANGED
|
@@ -169,11 +169,21 @@ var CrudFlow = /** @class */ (function () {
|
|
|
169
169
|
});
|
|
170
170
|
});
|
|
171
171
|
};
|
|
172
|
-
CrudFlow.prototype.sumBy = function (fieldToSum, fieldToGroup, addToSet) {
|
|
172
|
+
CrudFlow.prototype.sumBy = function (fieldToSum, fieldToGroup, addToSet, session) {
|
|
173
173
|
return __awaiter(this, void 0, void 0, function () {
|
|
174
174
|
return __generator(this, function (_a) {
|
|
175
175
|
switch (_a.label) {
|
|
176
|
-
case 0: return [4 /*yield*/, this.search.sumBy(this.repository, fieldToSum, fieldToGroup, addToSet)];
|
|
176
|
+
case 0: return [4 /*yield*/, this.search.sumBy(this.repository, fieldToSum, fieldToGroup, addToSet, session)];
|
|
177
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
CrudFlow.prototype.sumByAndPaging = function (fieldToSum, fieldToGroup, addToSet) {
|
|
183
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
184
|
+
return __generator(this, function (_a) {
|
|
185
|
+
switch (_a.label) {
|
|
186
|
+
case 0: return [4 /*yield*/, this.search.sumByPaging(this.repository, fieldToSum, fieldToGroup, addToSet)];
|
|
177
187
|
case 1: return [2 /*return*/, _a.sent()];
|
|
178
188
|
}
|
|
179
189
|
});
|
|
@@ -22,6 +22,7 @@ declare abstract class SearchFlow {
|
|
|
22
22
|
count(model: mongoose.Model<any>): Promise<number>;
|
|
23
23
|
findOne(repository: mongoose.Model<any>, model: any, params?: any): Promise<any>;
|
|
24
24
|
sumBy(model: mongoose.Model<any>, _sum: any, _by: any, items?: any, session?: ClientSession): Promise<any[]>;
|
|
25
|
+
sumByPaging(model: mongoose.Model<any>, fieldToSum: any, fieldToGroup: any, items?: any): Promise<SearchResponse<any>>;
|
|
25
26
|
buildDefaultFilters(objectSearch: any): any;
|
|
26
27
|
addFilterModel(model: any, filters: any): void;
|
|
27
28
|
}
|
package/dist/flow/SearchFlow.js
CHANGED
|
@@ -232,9 +232,7 @@ var SearchFlow = /** @class */ (function () {
|
|
|
232
232
|
},
|
|
233
233
|
{
|
|
234
234
|
$sort: sort
|
|
235
|
-
}
|
|
236
|
-
{ $skip: (this.page - 1) * this.limit },
|
|
237
|
-
{ $limit: this.limit }
|
|
235
|
+
}
|
|
238
236
|
]).session(session)];
|
|
239
237
|
case 1:
|
|
240
238
|
ret = _a.sent();
|
|
@@ -243,6 +241,55 @@ var SearchFlow = /** @class */ (function () {
|
|
|
243
241
|
});
|
|
244
242
|
});
|
|
245
243
|
};
|
|
244
|
+
SearchFlow.prototype.sumByPaging = function (model, fieldToSum, fieldToGroup, items) {
|
|
245
|
+
if (items === void 0) { items = undefined; }
|
|
246
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
247
|
+
var sort, result;
|
|
248
|
+
return __generator(this, function (_a) {
|
|
249
|
+
switch (_a.label) {
|
|
250
|
+
case 0:
|
|
251
|
+
sort = this.buildOrdenation();
|
|
252
|
+
return [4 /*yield*/, model.aggregate([
|
|
253
|
+
{
|
|
254
|
+
$facet: {
|
|
255
|
+
items: [
|
|
256
|
+
{ $match: this.filters },
|
|
257
|
+
{
|
|
258
|
+
$group: {
|
|
259
|
+
_id: fieldToGroup,
|
|
260
|
+
totalValue: { "$sum": fieldToSum },
|
|
261
|
+
count: { "$sum": 1 },
|
|
262
|
+
items: items
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
{ $sort: sort },
|
|
266
|
+
{ $skip: (this.page - 1) * this.limit },
|
|
267
|
+
{ $limit: this.limit }
|
|
268
|
+
],
|
|
269
|
+
paging: [
|
|
270
|
+
{ $match: this.filters },
|
|
271
|
+
{ $group: { _id: fieldToGroup, count: { $sum: 1 } } },
|
|
272
|
+
{ $count: "total" },
|
|
273
|
+
{
|
|
274
|
+
$addFields: {
|
|
275
|
+
page: this.page,
|
|
276
|
+
limit: this.limit
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
])];
|
|
283
|
+
case 1:
|
|
284
|
+
result = _a.sent();
|
|
285
|
+
return [2 /*return*/, {
|
|
286
|
+
items: result[0].items,
|
|
287
|
+
paging: result[0].paging[0]
|
|
288
|
+
}];
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
};
|
|
246
293
|
SearchFlow.prototype.buildDefaultFilters = function (objectSearch) {
|
|
247
294
|
var filters = { $and: [] };
|
|
248
295
|
Object.entries(objectSearch.model).forEach(function (_a) {
|
package/package.json
CHANGED
package/src/flow/CrudFlow.ts
CHANGED
|
@@ -65,8 +65,12 @@ class CrudFlow<D> {
|
|
|
65
65
|
return data as D
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
public async sumBy(fieldToSum: any, fieldToGroup: any, addToSet?: any): Promise<any> {
|
|
69
|
-
return await this.search.sumBy(this.repository, fieldToSum, fieldToGroup, addToSet)
|
|
68
|
+
public async sumBy(fieldToSum: any, fieldToGroup: any, addToSet?: any, session?: ClientSession): Promise<any> {
|
|
69
|
+
return await this.search.sumBy(this.repository, fieldToSum, fieldToGroup, addToSet, session)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public async sumByAndPaging(fieldToSum: any, fieldToGroup: any, addToSet?: any): Promise<SearchResponse<any>> {
|
|
73
|
+
return await this.search.sumByPaging(this.repository, fieldToSum, fieldToGroup, addToSet)
|
|
70
74
|
}
|
|
71
75
|
}
|
|
72
76
|
|
package/src/flow/SearchFlow.ts
CHANGED
|
@@ -151,14 +151,55 @@ abstract class SearchFlow {
|
|
|
151
151
|
},
|
|
152
152
|
{
|
|
153
153
|
$sort: sort
|
|
154
|
-
}
|
|
155
|
-
{ $skip: (this.page - 1) * this.limit },
|
|
156
|
-
{ $limit: this.limit }
|
|
154
|
+
}
|
|
157
155
|
]
|
|
158
156
|
).session(session!)
|
|
159
157
|
return ret
|
|
160
158
|
}
|
|
161
159
|
|
|
160
|
+
async sumByPaging(model: mongoose.Model<any>, fieldToSum: any, fieldToGroup: any, items: any = undefined): Promise<SearchResponse<any>> {
|
|
161
|
+
const sort = this.buildOrdenation()
|
|
162
|
+
const result = await model.aggregate(
|
|
163
|
+
[
|
|
164
|
+
{
|
|
165
|
+
$facet: {
|
|
166
|
+
items: [
|
|
167
|
+
{ $match: this.filters },
|
|
168
|
+
{
|
|
169
|
+
$group: {
|
|
170
|
+
_id: fieldToGroup,
|
|
171
|
+
totalValue: { "$sum": fieldToSum },
|
|
172
|
+
count: { "$sum": 1 },
|
|
173
|
+
items: items
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
{ $sort: sort },
|
|
177
|
+
{ $skip: (this.page - 1) * this.limit },
|
|
178
|
+
{ $limit: this.limit }
|
|
179
|
+
],
|
|
180
|
+
paging: [
|
|
181
|
+
{ $match: this.filters },
|
|
182
|
+
{ $group: { _id: fieldToGroup, count: { $sum: 1 } } },
|
|
183
|
+
{ $count: "total" },
|
|
184
|
+
{
|
|
185
|
+
$addFields:
|
|
186
|
+
{
|
|
187
|
+
page: this.page,
|
|
188
|
+
limit: this.limit
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
return {
|
|
198
|
+
items: result[0].items,
|
|
199
|
+
paging: result[0].paging[0]
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
162
203
|
public buildDefaultFilters(objectSearch: any) {
|
|
163
204
|
let filters = { $and: [] } as any
|
|
164
205
|
Object.entries(objectSearch.model).forEach(([key, value]) => {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
declare interface SearchResponse<T> {
|
|
2
2
|
paging?: Pagination,
|
|
3
3
|
items?: T[]
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
declare interface Pagination {
|
|
7
7
|
total?: number,
|
|
8
8
|
page?: number,
|
|
9
9
|
limit?: number
|
|
10
|
-
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { SearchResponse, Pagination }
|