@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 CHANGED
@@ -1,9 +1,14 @@
1
1
  import { Filter, FindOptions } from './MongoProvider';
2
- import { Func, Get, Id, OneOrMore, Optional, PartialRecord } from '@thisisagile/easy';
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<string, Func<Filter, string>>, o: object) => {
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: string | unknown[], separator?: string) => {
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, o) => ({ $match: (0, easy_1.meta)(o).entries().reduce((a, [k, v]) => ({ ...a, ...(0, easy_1.ifDefined)(filters[k], f => f(v)) }), {}) }),
28
+ filter: (filters) => new FilterBuilder(filters),
21
29
  gt: (value) => ({ $gt: value }),
22
30
  gte: (value) => ({ $gte: value }),
23
31
  lt: (value) => ({ $lt: value }),
@@ -1 +1 @@
1
- {"version":3,"file":"Stages.js","sourceRoot":"","sources":["../src/Stages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Stages.js","sourceRoot":"","sources":["../src/Stages.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy-mongo",
3
- "version": "15.0.3",
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.3"
34
+ "@thisisagile/easy-test": "15.0.5"
35
35
  },
36
36
  "dependencies": {
37
- "@thisisagile/easy": "^15.0.3",
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<string, Func<Filter, string>>, o: object) => ({$match: meta(o).entries<string>().reduce((a, [k, v]) => ({...a, ...ifDefined(filters[k], f => f(v))}), {})}),
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: string | unknown[], separator = ',') => ({$in: isString(value) ? value.split(separator) : 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'}),