c2-mongoose 2.1.267 → 2.1.268

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.
@@ -8,6 +8,7 @@ declare class C2Flow<D> {
8
8
  createMany(data: Partial<D>[], options: Partial<Options>): Promise<Partial<D>[]>;
9
9
  updateById(_id: Types.ObjectId, data: Partial<D>, options: Partial<Options>): Promise<Partial<D>>;
10
10
  updateByModel(searcher: SearchFlow, data: Partial<D>, options: Partial<Options>): Promise<Partial<D>>;
11
+ updateByFilters(filters: any, data: Partial<D>, options: Partial<Options>): Promise<Partial<D>>;
11
12
  updateMany(searcher: SearchFlow, data: D, options: Options): Promise<any>;
12
13
  deleteById(_id: Types.ObjectId, options: Partial<Options>): Promise<void>;
13
14
  deleteByModel(searcher: SearchFlow, options: Partial<Options>): Promise<void>;
@@ -155,6 +155,35 @@ var C2Flow = /** @class */ (function () {
155
155
  });
156
156
  });
157
157
  };
158
+ C2Flow.prototype.updateByFilters = function (filters, data, options) {
159
+ return __awaiter(this, void 0, void 0, function () {
160
+ var dataAfter, log;
161
+ return __generator(this, function (_a) {
162
+ switch (_a.label) {
163
+ case 0: return [4 /*yield*/, this.repository.findOneAndUpdate(filters, data, { returnDocument: 'after', session: options.session })];
164
+ case 1:
165
+ dataAfter = _a.sent();
166
+ if (options.logger === false) {
167
+ if ((0, Utils_1.isEmpty)(dataAfter)) {
168
+ return [2 /*return*/, dataAfter];
169
+ }
170
+ return [2 /*return*/, dataAfter._doc];
171
+ }
172
+ if ((0, Utils_1.isEmpty)(dataAfter)) {
173
+ return [2 /*return*/, dataAfter];
174
+ }
175
+ log = BuildLogFlowItem_1.default.build(options, __assign({ _id: dataAfter._id }, data), Logger_1.TypeOfOperation.UPDATE, this.repository);
176
+ return [4 /*yield*/, global.LoggerRepository.create([log], { session: options.session })];
177
+ case 2:
178
+ _a.sent();
179
+ if ((0, Utils_1.isEmpty)(dataAfter)) {
180
+ return [2 /*return*/, dataAfter];
181
+ }
182
+ return [2 /*return*/, dataAfter._doc];
183
+ }
184
+ });
185
+ });
186
+ };
158
187
  C2Flow.prototype.updateMany = function (searcher, data, options) {
159
188
  return __awaiter(this, void 0, void 0, function () {
160
189
  var dataAfter, log;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "c2-mongoose",
3
- "version": "2.1.267",
3
+ "version": "2.1.268",
4
4
  "description": "Lib to make any search in database mongoose and use as basic crud",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -83,6 +83,28 @@ class C2Flow<D> {
83
83
  return dataAfter._doc
84
84
  }
85
85
 
86
+ async updateByFilters(filters: any, data: Partial<D>, options: Partial<Options>): Promise<Partial<D>> {
87
+ let dataAfter = await this.repository.findOneAndUpdate(filters, data, { returnDocument: 'after', session: options.session })
88
+
89
+ if (options.logger === false) {
90
+ if (isEmpty(dataAfter)) {
91
+ return dataAfter
92
+ }
93
+ return dataAfter._doc
94
+ }
95
+
96
+ if (isEmpty(dataAfter)) {
97
+ return dataAfter
98
+ }
99
+
100
+ let log: Partial<ILogger> = BuildLogFlowItem.build(options, { _id: dataAfter._id, ...data }, TypeOfOperation.UPDATE, this.repository)
101
+ await (global as any).LoggerRepository.create([log], { session: options.session })
102
+ if (isEmpty(dataAfter)) {
103
+ return dataAfter
104
+ }
105
+ return dataAfter._doc
106
+ }
107
+
86
108
  async updateMany(searcher: SearchFlow, data: D, options: Options): Promise<any> {
87
109
  let dataAfter = await this.repository.updateMany(searcher.filters, data as Partial<D>, { returnDocument: 'after', session: options.session })
88
110
  if (options.logger === false) {