@thisisagile/easy-mongo 15.0.3 → 15.0.5
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/Stages.d.ts +10 -6
- package/dist/Stages.js +9 -1
- package/dist/Stages.js.map +1 -1
- package/package.json +3 -3
- package/src/Stages.ts +12 -3
package/dist/Stages.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { Filter, FindOptions } from './MongoProvider';
|
|
2
|
-
import {
|
|
2
|
+
import { Get, Id, OneOrMore, Optional, PartialRecord } from '@thisisagile/easy';
|
|
3
3
|
export declare const asc = 1;
|
|
4
4
|
export declare const desc = -1;
|
|
5
5
|
export type Accumulators = '$sum' | '$count' | '$avg' | '$first' | '$last' | '$min' | '$max' | '$push';
|
|
6
6
|
export type Accumulator = PartialRecord<Accumulators, Filter>;
|
|
7
|
+
declare class FilterBuilder<Options> {
|
|
8
|
+
private filters;
|
|
9
|
+
constructor(filters: Partial<Record<keyof Options, (value: unknown) => Filter>>);
|
|
10
|
+
from: (q?: Partial<Options>) => Filter;
|
|
11
|
+
}
|
|
7
12
|
export declare const stages: {
|
|
8
13
|
root: string;
|
|
9
14
|
current: string;
|
|
@@ -17,9 +22,7 @@ export declare const stages: {
|
|
|
17
22
|
match: (f: Record<string, Get<Optional<Filter>, string>>) => {
|
|
18
23
|
$match: any;
|
|
19
24
|
};
|
|
20
|
-
filter: (filters: Record<
|
|
21
|
-
$match: {};
|
|
22
|
-
};
|
|
25
|
+
filter: <Options>(filters: Partial<Record<keyof Options, (value: unknown) => Filter>>) => FilterBuilder<Options>;
|
|
23
26
|
gt: (value: Filter) => {
|
|
24
27
|
$gt: Filter;
|
|
25
28
|
};
|
|
@@ -32,8 +35,8 @@ export declare const stages: {
|
|
|
32
35
|
lte: (value: Filter) => {
|
|
33
36
|
$lte: Filter;
|
|
34
37
|
};
|
|
35
|
-
isIn: (value:
|
|
36
|
-
$in: unknown
|
|
38
|
+
isIn: (value: OneOrMore<unknown>, separator?: string) => {
|
|
39
|
+
$in: unknown;
|
|
37
40
|
};
|
|
38
41
|
after: (date: unknown) => {
|
|
39
42
|
$gte: Filter;
|
|
@@ -131,3 +134,4 @@ export declare const stages: {
|
|
|
131
134
|
data: () => never[];
|
|
132
135
|
};
|
|
133
136
|
};
|
|
137
|
+
export {};
|
package/dist/Stages.js
CHANGED
|
@@ -5,6 +5,14 @@ const easy_1 = require("@thisisagile/easy");
|
|
|
5
5
|
const Utils_1 = require("./Utils");
|
|
6
6
|
exports.asc = 1;
|
|
7
7
|
exports.desc = -1;
|
|
8
|
+
class FilterBuilder {
|
|
9
|
+
constructor(filters) {
|
|
10
|
+
this.filters = filters;
|
|
11
|
+
this.from = (q = {}) => exports.stages.match.match((0, easy_1.meta)(q)
|
|
12
|
+
.entries()
|
|
13
|
+
.reduce((acc, [key, value]) => ({ ...acc, ...(0, easy_1.ifDefined)(this.filters[key], f => f(value)) }), {}));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
8
16
|
const escapeRegex = (s) => s.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d');
|
|
9
17
|
exports.stages = {
|
|
10
18
|
root: '$$ROOT',
|
|
@@ -17,7 +25,7 @@ exports.stages = {
|
|
|
17
25
|
},
|
|
18
26
|
match: {
|
|
19
27
|
match: (f) => ({ $match: exports.stages.decode.fields(f) }),
|
|
20
|
-
filter: (filters
|
|
28
|
+
filter: (filters) => new FilterBuilder(filters),
|
|
21
29
|
gt: (value) => ({ $gt: value }),
|
|
22
30
|
gte: (value) => ({ $gte: value }),
|
|
23
31
|
lt: (value) => ({ $lt: value }),
|
package/dist/Stages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stages.js","sourceRoot":"","sources":["../src/Stages.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"Stages.js","sourceRoot":"","sources":["../src/Stages.ts"],"names":[],"mappings":";;;AACA,4CAkB2B;AAC3B,mCAAoC;AAEvB,QAAA,GAAG,GAAG,CAAC,CAAC;AACR,QAAA,IAAI,GAAG,CAAC,CAAC,CAAC;AAIvB,MAAM,aAAa;IACf,YAAoB,OAAmE;QAAnE,YAAO,GAAP,OAAO,CAA4D;QAGvF,SAAI,GAAG,CAAC,IAAsB,EAAE,EAAU,EAAE,CACxC,cAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAA,WAAI,EAAC,CAAC,CAAC;aACrB,OAAO,EAAE;aACT,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,GAAG,EAAE,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,GAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IALzH,CAAC;CAMJ;AAED,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAEtF,QAAA,MAAM,GAAG;IAClB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,WAAW;IACpB,EAAE,EAAE,KAAK;IACT,MAAM,EAAE;QACJ,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,SAAE,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAA,gBAAS,EAAC,IAAA,iBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAS,CAAC;QACjJ,YAAY,EAAE,CAAC,CAAS,EAAE,EAAE,CACxB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,SAAE,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAA,UAAG,EAAC,IAAA,cAAO,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAA,iBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAS,CAAC;QAC/I,EAAE,EAAE,CAAC,CAAkB,EAAE,EAAE,CAAC,CAAC,IAAA,eAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAA,eAAQ,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,iBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACxJ;IACD,KAAK,EAAE;QACH,KAAK,EAAE,CAAC,CAAgD,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,cAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC;QAChG,MAAM,EAAE,CAAU,OAAmE,EAAE,EAAE,CAAC,IAAI,aAAa,CAAU,OAAO,CAAC;QAC7H,EAAE,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC;QACrC,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;QACvC,EAAE,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC;QACrC,GAAG,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;QACvC,IAAI,EAAE,CAAC,KAAyB,EAAE,SAAS,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,IAAA,eAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC;QAC/G,KAAK,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,cAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,cAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC;QAC7D,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC;KACrE;IACD,IAAI,EAAE;QACF,IAAI,EAAE,CAAC,KAA+C,EAAoB,EAAE,CAAC,CAAC,IAAA,gBAAS,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrH,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,cAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,GAAG,CAAC,EAAE,WAAG,EAAC,CAAC;QACpD,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,cAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,GAAG,CAAC,EAAE,YAAI,EAAC,CAAC;KACzD;IACD,KAAK,EAAE;QACH,KAAK,EAAE,CAAC,MAAmC,EAAE,EAAE,CAAC,CAAC;YAC7C,EAAE,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAC,GAAG,EAAE,cAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,cAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC;SAC3G,CAAC;QACF,IAAI,EACA,CAAC,MAAM,GAAG,UAAU,EAAE,EAAE,CACpB,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,EAAC,aAAa,EAAE,EAAC,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAC,EAAC,CAAC;QACrE,KAAK,EAAE,GAAgB,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC,CAAC;QACxC,GAAG,EAAE,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC;QACzD,GAAG,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC;QAC5C,KAAK,EAAE,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC;QAC3D,GAAG,EAAE,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC;QACzD,GAAG,EAAE,CAAC,IAAa,EAAe,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC;QACzD,IAAI,EAAE,GAAgB,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;KAC/C;IACD,MAAM,EAAE;QACJ,MAAM,EAAE,CAAC,CAAsC,EAAE,EAAE,CAAC,CAAC,EAAC,OAAO,EAAE,cAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC;QACpF,IAAI,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,EAAC,YAAY,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAC,EAAC,CAAC;QACpF,KAAK,EAAE,CAAC,KAAc,EAAE,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,EAAE;gBACF,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC,GAAG;gBAChD,KAAK,EAAE,EAAC,QAAQ,EAAC;aACpB;SACJ,CAAC;KACL;IACD,GAAG,EAAE;QACD,GAAG,EAAE,CAAC,CAAsC,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,cAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,CAAC;QAClF,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,aAAa,EAAC,CAAC;KACxC;IACD,IAAI,EAAE;QACF,IAAI,EAAE,CAAC,IAAiB,EAAE,EAAoB,EAAE,CAAC,IAAA,gBAAS,EAAC,CAAC,CAAC,IAAI,EAAE,EAAC,KAAK,EAAE,IAAA,eAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC;QAC7F,IAAI,EAAE,CAAC,IAAiB,EAAE,EAAoB,EAAE,CAAC,IAAA,gBAAS,EAAC,CAAC,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,IAAA,eAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC;KACjG;IACD,OAAO,EAAE;QACL,OAAO,EAAE,CAAC,GAAG,QAAwC,EAAoB,EAAE,CACvE,IAAA,iBAAU,EAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAA,eAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;QAChI,OAAO,EAAE,CAAC,GAAG,QAAwC,EAAoB,EAAE,CACvE,IAAA,iBAAU,EAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAA,eAAQ,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,EAAC,CAAC,CAAC;KACnI;IACD,WAAW,EAAE;QACT,WAAW,EAAE,CAAC,CAAU,EAAoB,EAAE,CAAC,IAAA,gBAAS,EAAC,CAAC,EAAE,EAAC,YAAY,EAAE,CAAC,EAAC,CAAC;QAC9E,KAAK,EAAE,CAAC,GAAG,OAAiB,EAAoB,EAAE,CAAC,IAAA,iBAAU,EAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAC,aAAa,EAAE,EAAE,EAAC,CAAC,CAAC;QACnG,OAAO,EAAE,CAAC,GAAG,OAAiB,EAAoB,EAAE,CAAC,cAAM,CAAC,WAAW,CAAC,KAAK,CAAC,cAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC;QACtG,UAAU,EAAE,CAAC,GAAG,OAAiB,EAAoB,EAAE,CAAC,cAAM,CAAC,WAAW,CAAC,KAAK,CAAC,cAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC;KAC/G;IACD,KAAK,EAAE;QACH,KAAK,EAAE,CAAC,CAA2D,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,cAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,CAAC;QACjH,MAAM,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,EAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,EAAC,CAAC;QACvE,KAAK,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,EAAC,YAAY,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,EAAC,CAAC;QAC3E,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;KACjB;CACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thisisagile/easy-mongo",
|
|
3
|
-
"version": "15.0.
|
|
3
|
+
"version": "15.0.5",
|
|
4
4
|
"description": "Add support for MongoDB",
|
|
5
5
|
"author": "Sander Hoogendoorn",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@thisisagile/easy-test": "15.0.
|
|
34
|
+
"@thisisagile/easy-test": "15.0.5"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@thisisagile/easy": "^15.0.
|
|
37
|
+
"@thisisagile/easy": "^15.0.5",
|
|
38
38
|
"mongodb": "^5.6.0"
|
|
39
39
|
}
|
|
40
40
|
}
|
package/src/Stages.ts
CHANGED
|
@@ -2,7 +2,6 @@ import {Filter, FindOptions} from './MongoProvider';
|
|
|
2
2
|
import {
|
|
3
3
|
asNumber,
|
|
4
4
|
asString,
|
|
5
|
-
Func,
|
|
6
5
|
Get,
|
|
7
6
|
Id,
|
|
8
7
|
ifDefined,
|
|
@@ -26,6 +25,16 @@ export const desc = -1;
|
|
|
26
25
|
export type Accumulators = '$sum' | '$count' | '$avg' | '$first' | '$last' | '$min' | '$max' | '$push';
|
|
27
26
|
export type Accumulator = PartialRecord<Accumulators, Filter>;
|
|
28
27
|
|
|
28
|
+
class FilterBuilder<Options> {
|
|
29
|
+
constructor(private filters: Partial<Record<keyof Options, (value: unknown) => Filter>>) {
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
from = (q: Partial<Options> = {}): Filter =>
|
|
33
|
+
stages.match.match(meta(q)
|
|
34
|
+
.entries()
|
|
35
|
+
.reduce((acc, [key, value]) => ({...acc, ...ifDefined(this.filters[key as keyof Options], f => f(value))}), {}));
|
|
36
|
+
}
|
|
37
|
+
|
|
29
38
|
const escapeRegex = (s: string) => s.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d');
|
|
30
39
|
|
|
31
40
|
export const stages = {
|
|
@@ -40,12 +49,12 @@ export const stages = {
|
|
|
40
49
|
},
|
|
41
50
|
match: {
|
|
42
51
|
match: (f: Record<string, Get<Optional<Filter>, string>>) => ({$match: stages.decode.fields(f)}),
|
|
43
|
-
filter: (filters: Record<
|
|
52
|
+
filter: <Options>(filters: Partial<Record<keyof Options, (value: unknown) => Filter>>) => new FilterBuilder<Options>(filters),
|
|
44
53
|
gt: (value: Filter) => ({$gt: value}),
|
|
45
54
|
gte: (value: Filter) => ({$gte: value}),
|
|
46
55
|
lt: (value: Filter) => ({$lt: value}),
|
|
47
56
|
lte: (value: Filter) => ({$lte: value}),
|
|
48
|
-
isIn: (value:
|
|
57
|
+
isIn: (value: OneOrMore<unknown>, separator = ',') => ({$in: isString(value) ? value.split(separator) : value}),
|
|
49
58
|
after: (date: unknown) => stages.match.gte(toMongoType(date)),
|
|
50
59
|
before: (date: unknown) => stages.match.lt(toMongoType(date)),
|
|
51
60
|
anywhere: (q: string) => ({$regex: escapeRegex(q), $options: 'i'}),
|