c2-mongoose 2.1.283 → 2.1.284
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/SearcherFlow.d.ts +1 -0
- package/dist/flow/SearcherFlow.js +45 -24
- package/package.json +1 -1
- package/src/flow/SearcherFlow.ts +47 -28
|
@@ -31,6 +31,7 @@ declare class SearcherFlow<D> {
|
|
|
31
31
|
extractFieldsOfType(schema: Schema, typing?: string, parent?: string): string[];
|
|
32
32
|
buildCondition(key: string, value: any): any;
|
|
33
33
|
buildDefaultFilters(objectSearch: any): any;
|
|
34
|
+
normalizeValue(key: string, value: any): any;
|
|
34
35
|
isValidObjectId(value: string): boolean;
|
|
35
36
|
buildOrdenation(): any;
|
|
36
37
|
buildRegex(searchText: string): RegExp;
|
|
@@ -304,7 +304,7 @@ var SearcherFlow = /** @class */ (function () {
|
|
|
304
304
|
var _this = this;
|
|
305
305
|
// Recuperar todos os campos do tipo String
|
|
306
306
|
var camposString = (0, Utils_1.isEmpty)(this.searchTextFields) ? this.extractFieldsOfType(this.model.schema, 'String') : this.searchTextFields;
|
|
307
|
-
var
|
|
307
|
+
var andQueriesParam = [];
|
|
308
308
|
Object.entries(objectSearch).forEach(function (_a) {
|
|
309
309
|
var key = _a[0], value = _a[1];
|
|
310
310
|
if ((0, Utils_1.isNotEmpty)(value) || value === null) {
|
|
@@ -341,7 +341,7 @@ var SearcherFlow = /** @class */ (function () {
|
|
|
341
341
|
value = false;
|
|
342
342
|
}
|
|
343
343
|
var condition = _this.buildCondition(key, value);
|
|
344
|
-
|
|
344
|
+
andQueriesParam.push(condition);
|
|
345
345
|
}
|
|
346
346
|
});
|
|
347
347
|
if ((0, Utils_1.isNotEmpty)(this.searchText) && (0, Utils_1.isNotEmpty)(camposString)) {
|
|
@@ -353,34 +353,55 @@ var SearcherFlow = /** @class */ (function () {
|
|
|
353
353
|
conditionAux[fieldString] = { $regex: regex };
|
|
354
354
|
conditions.$or.push(conditionAux);
|
|
355
355
|
}
|
|
356
|
-
|
|
356
|
+
andQueriesParam.push(conditions);
|
|
357
357
|
}
|
|
358
|
-
if (filters.$and.length === 0)
|
|
359
|
-
|
|
358
|
+
// if (filters.$and.length === 0)
|
|
359
|
+
// delete filters['$and']
|
|
360
|
+
var orPayload = [];
|
|
360
361
|
if (objectSearch === null || objectSearch === void 0 ? void 0 : objectSearch.or) {
|
|
362
|
+
var _loop_1 = function (clause) {
|
|
363
|
+
if (clause.and && Array.isArray(clause.and)) {
|
|
364
|
+
var clauseAnd_1 = [];
|
|
365
|
+
Object.entries(clause.and).forEach(function (_a) {
|
|
366
|
+
var key = _a[0], value = _a[1];
|
|
367
|
+
if ((0, Utils_1.isEmpty)(value))
|
|
368
|
+
return;
|
|
369
|
+
value = _this.normalizeValue(key, value);
|
|
370
|
+
var condition = _this.buildCondition(key, value);
|
|
371
|
+
clauseAnd_1.push(condition);
|
|
372
|
+
});
|
|
373
|
+
orPayload.push(clauseAnd_1);
|
|
374
|
+
}
|
|
375
|
+
};
|
|
361
376
|
for (var _b = 0, _c = objectSearch === null || objectSearch === void 0 ? void 0 : objectSearch.or; _b < _c.length; _b++) {
|
|
362
377
|
var clause = _c[_b];
|
|
363
|
-
|
|
364
|
-
filters.$or = [];
|
|
365
|
-
Object.entries(clause).forEach(function (_a) {
|
|
366
|
-
var key = _a[0], value = _a[1];
|
|
367
|
-
if ((0, Utils_1.isEmpty)(value))
|
|
368
|
-
return;
|
|
369
|
-
if (typeof value === 'string' && _this.isValidObjectId(value) && key !== 'owner') {
|
|
370
|
-
value = new mongoose_1.Types.ObjectId(value);
|
|
371
|
-
}
|
|
372
|
-
if (value === 'true') {
|
|
373
|
-
value = true;
|
|
374
|
-
}
|
|
375
|
-
if (value === 'false') {
|
|
376
|
-
value = false;
|
|
377
|
-
}
|
|
378
|
-
var condition = _this.buildCondition(key, value);
|
|
379
|
-
filters.$or.push(condition);
|
|
380
|
-
});
|
|
378
|
+
_loop_1(clause);
|
|
381
379
|
}
|
|
382
380
|
}
|
|
383
|
-
|
|
381
|
+
var filtersFinal = {};
|
|
382
|
+
if (andQueriesParam.length > 0) {
|
|
383
|
+
if (!filtersFinal.$or)
|
|
384
|
+
filtersFinal.$or = [];
|
|
385
|
+
filtersFinal.$or = __spreadArray(__spreadArray([], filtersFinal.$or, true), [{ $and: __spreadArray([], andQueriesParam, true) }], false);
|
|
386
|
+
}
|
|
387
|
+
if (orPayload.length > 0) {
|
|
388
|
+
if (!filtersFinal.$or)
|
|
389
|
+
filtersFinal.$or = [];
|
|
390
|
+
filtersFinal.$or = __spreadArray(__spreadArray([], filtersFinal.$or, true), [{ $and: __spreadArray([], orPayload, true) }], false);
|
|
391
|
+
}
|
|
392
|
+
return filtersFinal;
|
|
393
|
+
};
|
|
394
|
+
SearcherFlow.prototype.normalizeValue = function (key, value) {
|
|
395
|
+
if (typeof value === 'string' && this.isValidObjectId(value) && key !== 'owner') {
|
|
396
|
+
value = new mongoose_1.Types.ObjectId(value);
|
|
397
|
+
}
|
|
398
|
+
if (value === 'true') {
|
|
399
|
+
value = true;
|
|
400
|
+
}
|
|
401
|
+
if (value === 'false') {
|
|
402
|
+
value = false;
|
|
403
|
+
}
|
|
404
|
+
return value;
|
|
384
405
|
};
|
|
385
406
|
SearcherFlow.prototype.isValidObjectId = function (value) {
|
|
386
407
|
var objectIdPattern = /^[0-9a-fA-F]{24}$/;
|
package/package.json
CHANGED
package/src/flow/SearcherFlow.ts
CHANGED
|
@@ -285,7 +285,7 @@ class SearcherFlow<D> {
|
|
|
285
285
|
const camposString = isEmpty(this.searchTextFields) ? this.extractFieldsOfType(this.model.schema, 'String') : this.searchTextFields
|
|
286
286
|
|
|
287
287
|
|
|
288
|
-
|
|
288
|
+
const andQueriesParam = []
|
|
289
289
|
Object.entries(objectSearch).forEach(([key, value]) => {
|
|
290
290
|
if (isNotEmpty(value) || value === null) {
|
|
291
291
|
if ([
|
|
@@ -324,7 +324,7 @@ class SearcherFlow<D> {
|
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
const condition = this.buildCondition(key, value)
|
|
327
|
-
|
|
327
|
+
andQueriesParam.push(condition)
|
|
328
328
|
}
|
|
329
329
|
})
|
|
330
330
|
|
|
@@ -337,40 +337,59 @@ class SearcherFlow<D> {
|
|
|
337
337
|
|
|
338
338
|
conditions.$or.push(conditionAux)
|
|
339
339
|
}
|
|
340
|
-
|
|
340
|
+
andQueriesParam.push(conditions)
|
|
341
341
|
}
|
|
342
342
|
|
|
343
|
-
if (filters.$and.length === 0)
|
|
344
|
-
|
|
343
|
+
// if (filters.$and.length === 0)
|
|
344
|
+
// delete filters['$and']
|
|
345
345
|
|
|
346
|
+
const orPayload: any[] = []
|
|
346
347
|
if (objectSearch?.or) {
|
|
347
348
|
for (const clause of objectSearch?.or) {
|
|
348
|
-
if (
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
value = true
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
if (value === 'false') {
|
|
363
|
-
value = false
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
const condition = this.buildCondition(key, value)
|
|
367
|
-
filters.$or.push(condition)
|
|
368
|
-
})
|
|
349
|
+
if (clause.and && Array.isArray(clause.and)) {
|
|
350
|
+
const clauseAnd: any[] = []
|
|
351
|
+
Object.entries(clause.and).forEach(([key, value]) => {
|
|
352
|
+
if (isEmpty(value)) return
|
|
353
|
+
value = this.normalizeValue(key, value)
|
|
354
|
+
const condition = this.buildCondition(key, value)
|
|
355
|
+
clauseAnd.push(condition)
|
|
356
|
+
})
|
|
357
|
+
|
|
358
|
+
orPayload.push(clauseAnd)
|
|
359
|
+
}
|
|
369
360
|
}
|
|
370
|
-
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
const filtersFinal = {} as any
|
|
371
364
|
|
|
365
|
+
if (andQueriesParam.length > 0) {
|
|
366
|
+
if (!filtersFinal.$or) filtersFinal.$or = []
|
|
367
|
+
filtersFinal.$or = [...filtersFinal.$or, { $and: [...andQueriesParam] }]
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (orPayload.length > 0) {
|
|
371
|
+
if (!filtersFinal.$or) filtersFinal.$or = []
|
|
372
|
+
filtersFinal.$or = [...filtersFinal.$or, { $and: [...orPayload] }]
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
return filtersFinal
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
public normalizeValue(key: string, value: any): any {
|
|
380
|
+
if (typeof value === 'string' && this.isValidObjectId(value as string) && key !== 'owner') {
|
|
381
|
+
value = new Types.ObjectId(value as string)
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
if (value === 'true') {
|
|
385
|
+
value = true
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
if (value === 'false') {
|
|
389
|
+
value = false
|
|
390
|
+
}
|
|
372
391
|
|
|
373
|
-
return
|
|
392
|
+
return value
|
|
374
393
|
}
|
|
375
394
|
|
|
376
395
|
public isValidObjectId(value: string) {
|