c2-mongoose 2.1.52 → 2.1.53
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
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import mongoose, { ClientSession } from "mongoose";
|
|
2
|
-
import { SearchResponse } from "../types/SearchResponse";
|
|
2
|
+
import { SearchOptions, SearchResponse } from "../types/SearchResponse";
|
|
3
3
|
import SearchFlow from "./SearchFlow";
|
|
4
|
-
export interface PipelineStage {
|
|
5
|
-
[key: string]: any;
|
|
6
|
-
}
|
|
7
4
|
declare class CrudFlow<D> {
|
|
8
5
|
private repository;
|
|
9
6
|
private search;
|
|
@@ -15,7 +12,7 @@ declare class CrudFlow<D> {
|
|
|
15
12
|
update(id: string, data: D, session?: any): Promise<D>;
|
|
16
13
|
updateAny(id: string, data: any, session?: any): Promise<D>;
|
|
17
14
|
updateByModel(filter: any, data: any, params: any): Promise<D>;
|
|
18
|
-
find(
|
|
15
|
+
find(options?: SearchOptions): Promise<SearchResponse<D>>;
|
|
19
16
|
getOne(model: D, params?: any): Promise<D>;
|
|
20
17
|
get(id: string, pop?: string, sel?: string, session?: ClientSession): Promise<D>;
|
|
21
18
|
getById(id: string, session?: ClientSession): Promise<Partial<D>>;
|
package/dist/flow/CrudFlow.js
CHANGED
|
@@ -123,11 +123,11 @@ var CrudFlow = /** @class */ (function () {
|
|
|
123
123
|
});
|
|
124
124
|
});
|
|
125
125
|
};
|
|
126
|
-
CrudFlow.prototype.find = function (
|
|
126
|
+
CrudFlow.prototype.find = function (options) {
|
|
127
127
|
return __awaiter(this, void 0, void 0, function () {
|
|
128
128
|
return __generator(this, function (_a) {
|
|
129
129
|
switch (_a.label) {
|
|
130
|
-
case 0: return [4 /*yield*/, this.search.search(this.repository,
|
|
130
|
+
case 0: return [4 /*yield*/, this.search.search(this.repository, options)];
|
|
131
131
|
case 1: return [2 /*return*/, _a.sent()];
|
|
132
132
|
}
|
|
133
133
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import mongoose, { ClientSession } from "mongoose";
|
|
2
|
-
import { SearchResponse } from "../types/SearchResponse";
|
|
2
|
+
import { SearchOptions, SearchResponse } from "../types/SearchResponse";
|
|
3
3
|
declare abstract class SearchFlow {
|
|
4
4
|
searchText: string;
|
|
5
5
|
order: string;
|
|
@@ -16,11 +16,11 @@ declare abstract class SearchFlow {
|
|
|
16
16
|
buildPath(target: string, nested?: string): any;
|
|
17
17
|
buildOrdenation(): any;
|
|
18
18
|
buildRegex(searchText: string): RegExp;
|
|
19
|
-
searchPageable(model: mongoose.Model<any>,
|
|
19
|
+
searchPageable(model: mongoose.Model<any>, options: SearchOptions): Promise<{
|
|
20
20
|
items: any;
|
|
21
21
|
paging: any;
|
|
22
22
|
}>;
|
|
23
|
-
search(model: mongoose.Model<any>,
|
|
23
|
+
search(model: mongoose.Model<any>, options?: SearchOptions): Promise<SearchResponse<any>>;
|
|
24
24
|
/**
|
|
25
25
|
*
|
|
26
26
|
* @param model
|
package/dist/flow/SearchFlow.js
CHANGED
|
@@ -144,7 +144,7 @@ var SearchFlow = /** @class */ (function () {
|
|
|
144
144
|
.replace(/[ç|c|C|Ç]/g, '[c,ç]');
|
|
145
145
|
return new RegExp("".concat(regexExpression), 'i');
|
|
146
146
|
};
|
|
147
|
-
SearchFlow.prototype.searchPageable = function (model,
|
|
147
|
+
SearchFlow.prototype.searchPageable = function (model, options) {
|
|
148
148
|
var _a;
|
|
149
149
|
return __awaiter(this, void 0, void 0, function () {
|
|
150
150
|
var stagesItems, result;
|
|
@@ -156,7 +156,7 @@ var SearchFlow = /** @class */ (function () {
|
|
|
156
156
|
{ $sort: this.sort },
|
|
157
157
|
{ $skip: (this.page - 1) * this.limit },
|
|
158
158
|
{ $limit: this.limit }
|
|
159
|
-
],
|
|
159
|
+
], options.pipelines, true);
|
|
160
160
|
return [4 /*yield*/, model.aggregate([
|
|
161
161
|
{
|
|
162
162
|
$facet: {
|
|
@@ -173,7 +173,7 @@ var SearchFlow = /** @class */ (function () {
|
|
|
173
173
|
]
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
-
])];
|
|
176
|
+
]).session(options === null || options === void 0 ? void 0 : options.session)];
|
|
177
177
|
case 1:
|
|
178
178
|
result = _b.sent();
|
|
179
179
|
return [2 /*return*/, {
|
|
@@ -184,14 +184,14 @@ var SearchFlow = /** @class */ (function () {
|
|
|
184
184
|
});
|
|
185
185
|
});
|
|
186
186
|
};
|
|
187
|
-
SearchFlow.prototype.search = function (model,
|
|
187
|
+
SearchFlow.prototype.search = function (model, options) {
|
|
188
188
|
return __awaiter(this, void 0, void 0, function () {
|
|
189
189
|
return __generator(this, function (_a) {
|
|
190
190
|
switch (_a.label) {
|
|
191
191
|
case 0:
|
|
192
192
|
if (!(this.pageable == true)) return [3 /*break*/, 4];
|
|
193
|
-
if (!
|
|
194
|
-
return [4 /*yield*/, this.searchPageable(model,
|
|
193
|
+
if (!(options === null || options === void 0 ? void 0 : options.pipelines)) return [3 /*break*/, 2];
|
|
194
|
+
return [4 /*yield*/, this.searchPageable(model, options)];
|
|
195
195
|
case 1: return [2 /*return*/, _a.sent()];
|
|
196
196
|
case 2: return [4 /*yield*/, this.searchPageableOld(model)];
|
|
197
197
|
case 3: return [2 /*return*/, _a.sent()];
|
package/package.json
CHANGED
package/src/flow/CrudFlow.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import mongoose, { ClientSession } from "mongoose"
|
|
2
|
-
import { SearchResponse } from "../types/SearchResponse"
|
|
2
|
+
import { PipelineStage, SearchOptions, SearchResponse } from "../types/SearchResponse"
|
|
3
3
|
import SearchFlow from "./SearchFlow"
|
|
4
4
|
import { isEmpty, isNotEmpty } from "../utils/Utils"
|
|
5
5
|
|
|
6
|
-
export interface PipelineStage {
|
|
7
|
-
[key: string]: any;
|
|
8
|
-
}
|
|
9
6
|
class CrudFlow<D> {
|
|
10
7
|
|
|
11
8
|
private repository: mongoose.Model<any>
|
|
@@ -47,8 +44,8 @@ class CrudFlow<D> {
|
|
|
47
44
|
return dataAfter as D
|
|
48
45
|
}
|
|
49
46
|
|
|
50
|
-
public async find(
|
|
51
|
-
return await this.search.search(this.repository,
|
|
47
|
+
public async find(options?: SearchOptions): Promise<SearchResponse<D>> {
|
|
48
|
+
return await this.search.search(this.repository, options)
|
|
52
49
|
}
|
|
53
50
|
|
|
54
51
|
public async getOne(model: D, params: any = {}): Promise<D> {
|
package/src/flow/SearchFlow.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import moment from "moment"
|
|
2
2
|
import mongoose, { ClientSession } from "mongoose"
|
|
3
3
|
import { dbCollation } from "../configuration/Environment"
|
|
4
|
-
import { Pagination, SearchResponse } from "../types/SearchResponse"
|
|
4
|
+
import { Pagination, PipelineStage, SearchOptions, SearchResponse } from "../types/SearchResponse"
|
|
5
5
|
import { isEmpty, isNotEmpty } from "../utils/Utils"
|
|
6
6
|
|
|
7
7
|
abstract class SearchFlow {
|
|
@@ -74,20 +74,20 @@ abstract class SearchFlow {
|
|
|
74
74
|
return new RegExp(`${regexExpression}`, 'i');
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
async searchPageable(model: mongoose.Model<any>,
|
|
77
|
+
async searchPageable(model: mongoose.Model<any>, options: SearchOptions) {
|
|
78
78
|
let stagesItems = [
|
|
79
79
|
{ $match: this.filters },
|
|
80
80
|
{ $sort: this.sort },
|
|
81
81
|
{ $skip: (this.page - 1) * this.limit },
|
|
82
82
|
{ $limit: this.limit },
|
|
83
|
-
...
|
|
83
|
+
...options.pipelines
|
|
84
84
|
]
|
|
85
85
|
|
|
86
86
|
const result = await model.aggregate(
|
|
87
87
|
[
|
|
88
88
|
{
|
|
89
89
|
$facet: {
|
|
90
|
-
items: stagesItems,
|
|
90
|
+
items: stagesItems as any,
|
|
91
91
|
paging: [
|
|
92
92
|
{ $match: this.filters },
|
|
93
93
|
{ $count: "total" },
|
|
@@ -102,17 +102,17 @@ abstract class SearchFlow {
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
]
|
|
105
|
-
)
|
|
105
|
+
).session(options?.session as ClientSession)
|
|
106
106
|
return {
|
|
107
107
|
items: result[0].items,
|
|
108
108
|
paging: result[0]?.paging[0] || { total: 0, page: 1, limit: this.limit }
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
public async search(model: mongoose.Model<any>,
|
|
112
|
+
public async search(model: mongoose.Model<any>, options?: SearchOptions): Promise<SearchResponse<any>> {
|
|
113
113
|
if (this.pageable == true) {
|
|
114
|
-
if (
|
|
115
|
-
return await this.searchPageable(model,
|
|
114
|
+
if (options?.pipelines) {
|
|
115
|
+
return await this.searchPageable(model, options)
|
|
116
116
|
}
|
|
117
117
|
return await this.searchPageableOld(model)
|
|
118
118
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ClientSession } from "mongoose";
|
|
2
|
+
|
|
1
3
|
declare interface SearchResponse<T> {
|
|
2
4
|
paging?: Pagination,
|
|
3
5
|
items?: T[]
|
|
@@ -9,4 +11,13 @@ declare interface Pagination {
|
|
|
9
11
|
limit?: number
|
|
10
12
|
}
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
declare interface PipelineStage {
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
declare interface SearchOptions {
|
|
19
|
+
pipelines: PipelineStage[],
|
|
20
|
+
session?: ClientSession
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { SearchResponse, Pagination, PipelineStage, SearchOptions };
|