@abejarano/ts-mongodb-criteria 1.2.1 → 1.3.0
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/criteria/FilterOperator.d.ts +3 -1
- package/dist/criteria/FilterOperator.js +2 -0
- package/dist/criteria/FilterValue.d.ts +2 -0
- package/dist/criteria/FilterValue.js +9 -0
- package/dist/mongo/MongoCriteriaConverter.d.ts +5 -2
- package/dist/mongo/MongoCriteriaConverter.js +14 -0
- package/package.json +1 -1
|
@@ -14,6 +14,8 @@ var Operator;
|
|
|
14
14
|
Operator["LTE"] = "<=";
|
|
15
15
|
Operator["BETWEEN"] = "BETWEEN";
|
|
16
16
|
Operator["OR"] = "OR";
|
|
17
|
+
Operator["IN"] = "IN";
|
|
18
|
+
Operator["NOT_IN"] = "NOT_IN";
|
|
17
19
|
})(Operator || (exports.Operator = Operator = {}));
|
|
18
20
|
//export class FilterOperator extends EnumValueObject<Operator> {
|
|
19
21
|
class FilterOperator {
|
|
@@ -70,5 +70,14 @@ class FilterValue extends valueObject_1.StringValueObject {
|
|
|
70
70
|
}
|
|
71
71
|
throw new Error("Value is not a BETWEEN structure");
|
|
72
72
|
}
|
|
73
|
+
get isPrimitiveArray() {
|
|
74
|
+
return Array.isArray(this._originalValue) && !this.isOrConditions;
|
|
75
|
+
}
|
|
76
|
+
get asPrimitiveArray() {
|
|
77
|
+
if (this.isPrimitiveArray) {
|
|
78
|
+
return this._originalValue;
|
|
79
|
+
}
|
|
80
|
+
throw new Error("Value is not an array of primitive values");
|
|
81
|
+
}
|
|
73
82
|
}
|
|
74
83
|
exports.FilterValue = FilterValue;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Criteria, Filters, Order } from "../criteria";
|
|
2
|
-
type MongoFilterOperator = "$eq" | "$ne" | "$gt" | "$lt" | "$regex" | "$lte" | "$gte" | "$or";
|
|
2
|
+
type MongoFilterOperator = "$eq" | "$ne" | "$gt" | "$lt" | "$regex" | "$lte" | "$gte" | "$or" | "$in" | "$nin";
|
|
3
3
|
type MongoFilterValue = boolean | string | number | Date;
|
|
4
|
+
type MongoFilterArrayValue = MongoFilterValue[];
|
|
4
5
|
type MongoFilterOperation = {
|
|
5
|
-
[operator in MongoFilterOperator]?: MongoFilterValue;
|
|
6
|
+
[operator in MongoFilterOperator]?: MongoFilterValue | MongoFilterArrayValue;
|
|
6
7
|
};
|
|
7
8
|
type MongoFilter = {
|
|
8
9
|
[field: string]: MongoFilterOperation;
|
|
@@ -37,6 +38,8 @@ export declare class MongoCriteriaConverter {
|
|
|
37
38
|
private lowerThanFilter;
|
|
38
39
|
private containsFilter;
|
|
39
40
|
private notContainsFilter;
|
|
41
|
+
private inFilter;
|
|
42
|
+
private notInFilter;
|
|
40
43
|
private orFilter;
|
|
41
44
|
private betweenFilter;
|
|
42
45
|
}
|
|
@@ -15,6 +15,8 @@ class MongoCriteriaConverter {
|
|
|
15
15
|
[criteria_1.Operator.LTE, this.lowerThanOrEqualFilter],
|
|
16
16
|
[criteria_1.Operator.BETWEEN, this.betweenFilter],
|
|
17
17
|
[criteria_1.Operator.OR, this.orFilter],
|
|
18
|
+
[criteria_1.Operator.IN, this.inFilter],
|
|
19
|
+
[criteria_1.Operator.NOT_IN, this.notInFilter],
|
|
18
20
|
]);
|
|
19
21
|
}
|
|
20
22
|
convert(criteria) {
|
|
@@ -70,6 +72,18 @@ class MongoCriteriaConverter {
|
|
|
70
72
|
[filter.field.value]: { $not: { $regex: filter.value.value } },
|
|
71
73
|
};
|
|
72
74
|
}
|
|
75
|
+
inFilter(filter) {
|
|
76
|
+
if (!filter.value.isPrimitiveArray) {
|
|
77
|
+
throw new Error("IN operator requires an array of primitive values");
|
|
78
|
+
}
|
|
79
|
+
return { [filter.field.value]: { $in: filter.value.asPrimitiveArray } };
|
|
80
|
+
}
|
|
81
|
+
notInFilter(filter) {
|
|
82
|
+
if (!filter.value.isPrimitiveArray) {
|
|
83
|
+
throw new Error("NOT_IN operator requires an array of primitive values");
|
|
84
|
+
}
|
|
85
|
+
return { [filter.field.value]: { $nin: filter.value.asPrimitiveArray } };
|
|
86
|
+
}
|
|
73
87
|
orFilter(filter) {
|
|
74
88
|
if (!filter.value.isOrConditions) {
|
|
75
89
|
throw new Error("OR operator requires an array of OrCondition objects");
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abejarano/ts-mongodb-criteria",
|
|
3
3
|
"author": "angel bejarano / angel.bejarano@jaspesoft.com",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.3.0",
|
|
5
5
|
"description": "Patrón Criteria para consultas MongoDB en TypeScript",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|