@thisisagile/easy-mongo 13.0.0 → 13.0.2

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,7 +1,9 @@
1
1
  import { Filter, FindOptions } from './MongoProvider';
2
- import { Get, Optional } from '@thisisagile/easy';
2
+ import { Get, Optional, PartialRecord } from '@thisisagile/easy';
3
3
  export declare const asc = 1;
4
4
  export declare const desc = -1;
5
+ export type Accumulators = '$sum' | '$count' | '$avg' | '$first' | '$last' | '$min' | '$max';
6
+ export type Accumulator = PartialRecord<Accumulators, Filter>;
5
7
  export declare const stages: {
6
8
  decode: {
7
9
  fields: (f: Filter) => any;
@@ -36,38 +38,26 @@ export declare const stages: {
36
38
  desc: (key: string) => Optional<Filter<unknown>>;
37
39
  };
38
40
  group: {
39
- groupBy: (by: Filter) => {
40
- and: (fields: Filter) => {
41
+ group: (fields: Record<string, Accumulator>) => {
42
+ by: (by: Filter) => {
41
43
  $group: any;
42
44
  };
43
45
  };
44
- count: () => {
45
- $count: {};
46
- };
47
- sum: (from?: string) => {
48
- $sum: string;
49
- };
50
- avg: (from?: string) => {
51
- $avg: string;
52
- };
53
- first: (from?: string) => {
54
- $first: string;
55
- };
56
- last: (from?: string) => {
57
- $last: string;
58
- };
59
- min: (from?: string) => {
60
- $min: string;
61
- };
62
- max: (from?: string) => {
63
- $max: string;
64
- };
65
46
  date: (format?: string) => (key: string) => {
66
47
  $dateToString: {
67
48
  date: string;
68
49
  format: string;
69
50
  };
70
51
  };
52
+ count: () => Accumulator;
53
+ sum: (from?: string) => Accumulator;
54
+ avg: (from?: string) => {
55
+ $avg: string;
56
+ };
57
+ first: (from?: string) => Accumulator;
58
+ last: (from?: string) => Accumulator;
59
+ min: (from?: string) => Accumulator;
60
+ max: (from?: string) => Accumulator;
71
61
  };
72
62
  skip: {
73
63
  skip: ({ skip: $skip }: FindOptions) => Optional<Filter>;
package/dist/Stages.js CHANGED
@@ -25,9 +25,10 @@ exports.stages = {
25
25
  desc: (key) => exports.stages.sort.sort({ [key]: exports.desc }),
26
26
  },
27
27
  group: {
28
- groupBy: (by) => ({
29
- and: (fields) => ({ $group: Object.assign({ _id: exports.stages.decode.id(by) }, exports.stages.decode.fields(fields)) }),
28
+ group: (fields) => ({
29
+ by: (by) => ({ $group: Object.assign({ _id: exports.stages.decode.id(by) }, exports.stages.decode.fields(fields)) }),
30
30
  }),
31
+ date: (format = '%Y-%m-%d') => (key) => ({ $dateToString: { date: `$${key}`, format } }),
31
32
  count: () => ({ $count: {} }),
32
33
  sum: (from) => ({ $sum: `$${from}` }),
33
34
  avg: (from) => ({ $avg: `$${from}` }),
@@ -35,7 +36,6 @@ exports.stages = {
35
36
  last: (from) => ({ $last: `$${from}` }),
36
37
  min: (from) => ({ $min: `$${from}` }),
37
38
  max: (from) => ({ $max: `$${from}` }),
38
- date: (format = '%Y-%m-%d') => (key) => ({ $dateToString: { date: `$${key}`, format } }),
39
39
  },
40
40
  skip: {
41
41
  skip: ({ skip: $skip }) => (0, easy_1.ifDefined)($skip, { $skip }),
@@ -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": "13.0.0",
3
+ "version": "13.0.2",
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": "13.0.0"
34
+ "@thisisagile/easy-test": "13.0.2"
35
35
  },
36
36
  "dependencies": {
37
- "@thisisagile/easy": "13.0.0",
37
+ "@thisisagile/easy": "13.0.2",
38
38
  "mongodb": "^4.14.0"
39
39
  }
40
40
  }
package/src/Stages.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  import { Filter, FindOptions } from './MongoProvider';
2
- import { Get, ifDefined, isFunction, isPresent, isString, on, Optional } from '@thisisagile/easy';
2
+ import { Get, ifDefined, isFunction, isPresent, isString, on, Optional, PartialRecord } from '@thisisagile/easy';
3
3
  import { toMongoType } from './Utils';
4
4
 
5
5
  export const asc = 1;
6
6
  export const desc = -1;
7
+ export type Accumulators = '$sum' | '$count' | '$avg' | '$first' | '$last' | '$min' | '$max';
8
+ export type Accumulator = PartialRecord<Accumulators, Filter>;
7
9
 
8
10
  export const stages = {
9
11
  decode: {
@@ -25,19 +27,19 @@ export const stages = {
25
27
  desc: (key: string) => stages.sort.sort({ [key]: desc }),
26
28
  },
27
29
  group: {
28
- groupBy: (by: Filter) => ({
29
- and: (fields: Filter) => ({ $group: Object.assign({ _id: stages.decode.id(by) }, stages.decode.fields(fields)) }),
30
+ group: (fields: Record<string, Accumulator>) => ({
31
+ by: (by: Filter) => ({ $group: Object.assign({ _id: stages.decode.id(by) }, stages.decode.fields(fields)) }),
30
32
  }),
31
- count: () => ({ $count: {} }),
32
- sum: (from?: string) => ({ $sum: `$${from}` }),
33
- avg: (from?: string) => ({ $avg: `$${from}` }),
34
- first: (from?: string) => ({ $first: `$${from}` }),
35
- last: (from?: string) => ({ $last: `$${from}` }),
36
- min: (from?: string) => ({ $min: `$${from}` }),
37
- max: (from?: string) => ({ $max: `$${from}` }),
38
33
  date:
39
34
  (format = '%Y-%m-%d') =>
40
35
  (key: string) => ({ $dateToString: { date: `$${key}`, format } }),
36
+ count: (): Accumulator => ({ $count: {} }),
37
+ sum: (from?: string): Accumulator => ({ $sum: `$${from}` }),
38
+ avg: (from?: string) => ({ $avg: `$${from}` }),
39
+ first: (from?: string): Accumulator => ({ $first: `$${from}` }),
40
+ last: (from?: string): Accumulator => ({ $last: `$${from}` }),
41
+ min: (from?: string): Accumulator => ({ $min: `$${from}` }),
42
+ max: (from?: string): Accumulator => ({ $max: `$${from}` }),
41
43
  },
42
44
  skip: {
43
45
  skip: ({ skip: $skip }: FindOptions): Optional<Filter> => ifDefined($skip, { $skip }),