@thisisagile/easy-mongo 12.7.21 → 12.7.22

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.
@@ -14,16 +14,17 @@ class MongoProvider {
14
14
  static client(db) {
15
15
  return (0, easy_1.when)(db.options?.cluster)
16
16
  .not.isDefined.reject(easy_1.Exception.IsNotValid.because('Missing cluster in database options.'))
17
- .then(u => (MongoProvider.clients[u] = MongoProvider.clients[u] ??
18
- mongodb_1.MongoClient.connect(u, {
19
- auth: {
20
- username: (0, easy_1.asString)(db.options?.user),
21
- password: (0, easy_1.asString)(db.options?.password),
22
- },
23
- ...(db.options?.maxPoolSize && { maxPoolSize: db.options?.maxPoolSize }),
24
- ...(db.options?.minPoolSize && { minPoolSize: db.options?.minPoolSize }),
25
- ...(db.options?.maxIdleTimeMS && { maxIdleTimeMS: db.options?.maxIdleTimeMS }),
26
- })));
17
+ .then(u => (MongoProvider.clients[u] =
18
+ MongoProvider.clients[u] ??
19
+ mongodb_1.MongoClient.connect(u, {
20
+ auth: {
21
+ username: (0, easy_1.asString)(db.options?.user),
22
+ password: (0, easy_1.asString)(db.options?.password),
23
+ },
24
+ ...(db.options?.maxPoolSize && { maxPoolSize: db.options?.maxPoolSize }),
25
+ ...(db.options?.minPoolSize && { minPoolSize: db.options?.minPoolSize }),
26
+ ...(db.options?.maxIdleTimeMS && { maxIdleTimeMS: db.options?.maxIdleTimeMS }),
27
+ })));
27
28
  }
28
29
  cluster() {
29
30
  return Promise.resolve()
@@ -1 +1 @@
1
- {"version":3,"file":"MongoProvider.js","sourceRoot":"","sources":["../src/MongoProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MongoProvider.js","sourceRoot":"","sources":["../src/MongoProvider.ts"],"names":[],"mappings":";;;AAAA,4CA4B2B;AAC3B,qCAUiB;AAEjB,mCAAsC;AAEtC,MAAM,MAAM,GAAG,CAAC,CAAO,EAAQ,EAAE,CAAC,WAAI,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAgBxD,MAAa,aAAa;IAIxB,YAAqB,IAAgB,EAAY,MAA6B;QAAzD,SAAI,GAAJ,IAAI,CAAY;QAAY,WAAM,GAAN,MAAM,CAAuB;QAF9E,cAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IAE0D,CAAC;IAElF,MAAM,CAAC,MAAM,CAAC,EAAY;QACxB,OAAO,IAAA,WAAI,EAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;aAC7B,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAS,CAAC,UAAU,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;aAC1F,IAAI,CACH,CAAC,CAAC,EAAE,CACF,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YACvB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxB,qBAAW,CAAC,OAAO,CAAC,CAAC,EAAE;oBACrB,IAAI,EAAE;wBACJ,QAAQ,EAAE,IAAA,eAAQ,EAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;wBACpC,QAAQ,EAAE,IAAA,eAAQ,EAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;qBACzC;oBACD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;oBACxE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;oBACxE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;iBAC/E,CAAC,CAAC,CACR,CAAC;IACN,CAAC;IAED,OAAO;QACL,OAAO,OAAO,CAAC,OAAO,EAAE;aACrB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7E,KAAK,CAAC,CAAC,CAAC,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,OAAO,IAAA,aAAM,EAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,KAAY;QACtB,OAAO,IAAA,mBAAW,EAAC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,KAAY,EAAE,OAAqB;QACtC,OAAO,IAAA,aAAM,EAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;aACnF,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAClB,IAAA,aAAM,EACJ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EACZ,IAAA,aAAM,EAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC3C,CACF;aACA,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,GAAG,CAAC,OAAqB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,EAAM,EAAE,OAAqB;QAChC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAA,eAAQ,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAkB,CAAC,CAAC;IACtI,CAAC;IAED,EAAE,CAAC,GAAW,EAAE,KAAgB,EAAE,OAAqB;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAA,eAAQ,EAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,EAAiB;QACrB,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACxD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aACpC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,IAAU;QACf,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACjF,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,EAAM;QACX,OAAO,IAAI,CAAC,UAAU,EAAE;aACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aAChD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,WAAW,CAAC,OAAgB,EAAE,OAAsB;QAClD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9H,CAAC;IAED,kBAAkB,CAAC,OAAgB,EAAE,MAAa,EAAE,OAAsC;QACxF,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,eAAe,CAAC,OAAkC,EAAE,OAAsB;QACxE,MAAM,EAAE,GAAG,IAAA,cAAO,EAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAA,eAAQ,EAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,EAAE;aAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aAClC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAES,aAAa,CAAC,OAAqB;QAC3C,OAAO;YACL,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,GAAG;YAC3B,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7C,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAQ,EAAE,CAAC;YAC/E,KAAK,EAAE,IAAA,gBAAS,EAAC,OAAO,EAAE,IAAI,CAAC,IAAI,IAAA,gBAAS,EAAC,OAAO,EAAE,IAAI,CAAC;YAC3D,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;SAC9C,CAAC;IACJ,CAAC;IAES,oBAAoB,CAAC,KAAc;QAC3C,OAAO,IAAA,aAAM,EAAC,KAAK,CAAC;aACjB,IAAI,CAAC,cAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAA8B,CAAC;aACpD,IAAI,CAAC,sBAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAwB,CAAC;aAC5D,IAAI,CAAC,cAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAuB,CAAC;aACpF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAuB,CAAC,CAAC;IACxC,CAAC;IAES,sBAAsB,CAAC,OAAsB;QACrD,OAAO;YACL,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI;YAC/B,GAAG,CAAC,OAAO,EAAE,gBAAgB,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACjF,GAAG,CAAC,OAAO,EAAE,eAAe,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;YAC9E,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,uBAAuB,EAAE,IAAA,mBAAW,EAAC,IAAA,aAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACxF,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;SACvB,CAAC;IACJ,CAAC;IAES,OAAO,CACf,MAA0D,EAC1D,OAA0D;QAE1D,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,iBAAU,EAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;;AA7IH,sCA8IC;AA7I2B,qBAAO,GAA4C,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy-mongo",
3
- "version": "12.7.21",
3
+ "version": "12.7.22",
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": "12.7.21"
34
+ "@thisisagile/easy-test": "12.7.22"
35
35
  },
36
36
  "dependencies": {
37
- "@thisisagile/easy": "^12.7.21",
37
+ "@thisisagile/easy": "^12.7.22",
38
38
  "mongodb": "^4.11.0"
39
39
  }
40
40
  }
@@ -1,45 +1,45 @@
1
1
  import {
2
- asJson,
3
- asString,
4
- choose,
5
- Condition,
6
- Database,
7
- Exception,
8
- FetchOptions,
9
- Field,
10
- Id,
11
- ifTrue,
12
- isArray,
13
- isDefined,
14
- isField,
15
- isSortCondition,
16
- json,
17
- Json,
18
- JsonValue,
19
- LogicalCondition,
20
- OneOrMore,
21
- PageList,
22
- reject,
23
- Sort,
24
- toArray,
25
- toPageList,
26
- tuple2,
27
- tuple3,
28
- when,
2
+ asJson,
3
+ asString,
4
+ choose,
5
+ Condition,
6
+ Database,
7
+ Exception,
8
+ FetchOptions,
9
+ Field,
10
+ Id,
11
+ ifTrue,
12
+ isArray,
13
+ isDefined,
14
+ isField,
15
+ isSortCondition,
16
+ json,
17
+ Json,
18
+ JsonValue,
19
+ LogicalCondition,
20
+ OneOrMore,
21
+ PageList,
22
+ reject,
23
+ Sort,
24
+ toArray,
25
+ toPageList,
26
+ tuple2,
27
+ tuple3,
28
+ when,
29
29
  } from '@thisisagile/easy';
30
30
  import {
31
- AggregationCursor,
32
- Collection as MongoCollection,
33
- CreateIndexesOptions,
34
- Document,
35
- Filter as MongoFilter,
36
- FindCursor,
37
- FindOptions as MongoFindOptions,
38
- IndexSpecification,
39
- MongoClient,
31
+ AggregationCursor,
32
+ Collection as MongoCollection,
33
+ CreateIndexesOptions,
34
+ Document,
35
+ Filter as MongoFilter,
36
+ FindCursor,
37
+ FindOptions as MongoFindOptions,
38
+ IndexSpecification,
39
+ MongoClient,
40
40
  } from 'mongodb';
41
- import {Collection} from './Collection';
42
- import {toMongoType} from './Utils';
41
+ import { Collection } from './Collection';
42
+ import { toMongoType } from './Utils';
43
43
 
44
44
  const omitId = (j: Json): Json => json.delete(j, '_id');
45
45
 
@@ -49,154 +49,154 @@ export type Filter<T> = MongoFilter<T>;
49
49
  export type Query = Condition | LogicalCondition | Filter<any>;
50
50
 
51
51
  export type IndexOptions = {
52
- unique?: boolean;
53
- filter?: Query;
54
- languageOverride?: string;
55
- languageDefault?: string;
52
+ unique?: boolean;
53
+ filter?: Query;
54
+ languageOverride?: string;
55
+ languageDefault?: string;
56
56
  };
57
57
 
58
58
  export type Indexes = OneOrMore<string | Field | Sort | Record<string, 1 | -1>>;
59
59
 
60
60
  export class MongoProvider {
61
- protected static readonly clients: { [key: string]: Promise<MongoClient> } = {};
62
- aggregate = this.group;
63
-
64
- constructor(readonly coll: Collection, protected client?: Promise<MongoClient>) {
65
- }
66
-
67
- static client(db: Database): Promise<MongoClient> {
68
- return when(db.options?.cluster)
69
- .not.isDefined.reject(Exception.IsNotValid.because('Missing cluster in database options.'))
70
- .then(
71
- u =>
72
- (MongoProvider.clients[u] = MongoProvider.clients[u] ??
73
- MongoClient.connect(u, {
74
- auth: {
75
- username: asString(db.options?.user),
76
- password: asString(db.options?.password),
77
- },
78
- ...(db.options?.maxPoolSize && {maxPoolSize: db.options?.maxPoolSize}),
79
- ...(db.options?.minPoolSize && {minPoolSize: db.options?.minPoolSize}),
80
- ...(db.options?.maxIdleTimeMS && {maxIdleTimeMS: db.options?.maxIdleTimeMS}),
81
- }))
82
- );
83
- }
84
-
85
- cluster(): Promise<MongoClient> {
86
- return Promise.resolve()
87
- .then(() => this.client ?? (this.client = MongoProvider.client(this.coll.db)))
88
- .catch(e => {
89
- this.client = undefined;
90
- return reject(e);
91
- });
92
- }
93
-
94
- toMongoJson(query: Query): Json {
95
- return toMongoType(asJson(query));
96
- }
97
-
98
- find(query: Query, options?: FindOptions): Promise<PageList<Json>> {
99
- return tuple3(this.collection(), this.toMongoJson(query), this.toFindOptions(options))
100
- .then(([c, q, o]) =>
101
- tuple2(
102
- c.find(q, o),
103
- ifTrue(o.total, () => c.countDocuments(q))
104
- )
105
- )
106
- .then(([res, total]) => this.toArray(res, options && {total}));
107
- }
108
-
109
- all(options?: FindOptions): Promise<PageList<Json>> {
110
- return this.find({}, options);
111
- }
112
-
113
- byId(id: Id, options?: FindOptions): Promise<Json> {
114
- return this.collection().then(c => c.findOne(this.toMongoJson({id: asString(id)}), this.toFindOptions(options)) as Promise<Json>);
115
- }
116
-
117
- by(key: string, value: JsonValue, options?: FindOptions): Promise<PageList<Json>> {
118
- return this.find({[key]: asString(value)}, options);
119
- }
120
-
121
- group(qs: Filter<any>[]): Promise<PageList<Json>> {
122
- return this.collection()
123
- .then(c => c.aggregate(qs.map(q => this.toMongoJson(q))))
124
- .then(res => this.toArray(res));
125
- }
126
-
127
- add(item: Json): Promise<Json> {
128
- return this.collection()
129
- .then(c => c.insertOne(omitId(item)))
130
- .then(() => omitId(item));
131
- }
132
-
133
- update(item: Json): Promise<Json> {
134
- return this.collection()
135
- .then(c => c.updateOne(this.toMongoJson({id: item.id}), {$set: omitId(item)}))
136
- .then(() => this.byId(item.id as Id));
137
- }
138
-
139
- remove(id: Id): Promise<boolean> {
140
- return this.collection()
141
- .then(c => c.deleteOne(this.toMongoJson({id})))
142
- .then(d => d.acknowledged);
143
- }
144
-
145
- count(query?: Query): Promise<number> {
146
- return this.collection().then(c => c.countDocuments(this.toMongoJson(query ?? {})));
147
- }
148
-
149
- createIndex(indexes: Indexes, options?: IndexOptions): Promise<string> {
150
- return this.collection().then(c => c.createIndex(this.toIndexSpecification(indexes), this.toCreateIndexesOptions(options)));
151
- }
152
-
153
- createPartialIndex(indexes: Indexes, filter: Query, options?: Omit<IndexOptions, 'filter'>): Promise<string> {
154
- return this.createIndex(indexes, {...options, filter});
155
- }
156
-
157
- createTextIndex(indexes: OneOrMore<Field | string>, options?: IndexOptions): Promise<string> {
158
- const ii = toArray(indexes).reduce((i, f) => ({...i, [asString(f)]: 'text'}), {});
159
- return this.createIndex(ii, {unique: false, ...options});
160
- }
161
-
162
- collection(): Promise<MongoCollection> {
163
- return this.cluster()
164
- .then(c => c.db(this.coll.db.name))
165
- .then(db => db.collection(asString(this.coll)));
166
- }
167
-
168
- protected toFindOptions(options?: FindOptions): MongoFindOptions & { total: boolean } {
169
- return {
170
- limit: options?.take ?? 250,
171
- ...(options?.skip && {skip: options?.skip}),
172
- ...(options?.sort && {sort: this.coll.sort(...(options?.sort ?? {})) as any}),
173
- total: isDefined(options?.skip) || isDefined(options?.take),
174
- projection: options?.projection ?? {_id: 0},
175
- };
176
- }
177
-
178
- protected toIndexSpecification(index: Indexes): IndexSpecification {
179
- return choose(index)
180
- .type(isField, f => f.property as IndexSpecification)
181
- .type(isSortCondition, s => s.toJSON() as IndexSpecification)
182
- .type(isArray, aa => aa.map(a => this.toIndexSpecification(a)) as IndexSpecification)
183
- .else(i => i as IndexSpecification);
184
- }
185
-
186
- protected toCreateIndexesOptions(options?: IndexOptions): CreateIndexesOptions {
187
- return {
188
- unique: options?.unique ?? true,
189
- ...(options?.languageOverride && {language_override: options.languageOverride}),
190
- ...(options?.languageDefault && {default_language: options.languageDefault}),
191
- ...(options?.filter && {partialFilterExpression: toMongoType(asJson(options.filter))}),
192
- writeConcern: {w: 1},
193
- };
194
- }
195
-
196
- protected toArray(
197
- cursor: FindCursor<Document> | AggregationCursor<Document>,
198
- options?: { take?: number; skip?: number; total?: number }
199
- ): Promise<PageList<Json>> {
200
- return cursor.toArray().then(r => toPageList<Json>(r, options));
201
- }
61
+ protected static readonly clients: { [key: string]: Promise<MongoClient> } = {};
62
+ aggregate = this.group;
63
+
64
+ constructor(readonly coll: Collection, protected client?: Promise<MongoClient>) {}
65
+
66
+ static client(db: Database): Promise<MongoClient> {
67
+ return when(db.options?.cluster)
68
+ .not.isDefined.reject(Exception.IsNotValid.because('Missing cluster in database options.'))
69
+ .then(
70
+ u =>
71
+ (MongoProvider.clients[u] =
72
+ MongoProvider.clients[u] ??
73
+ MongoClient.connect(u, {
74
+ auth: {
75
+ username: asString(db.options?.user),
76
+ password: asString(db.options?.password),
77
+ },
78
+ ...(db.options?.maxPoolSize && { maxPoolSize: db.options?.maxPoolSize }),
79
+ ...(db.options?.minPoolSize && { minPoolSize: db.options?.minPoolSize }),
80
+ ...(db.options?.maxIdleTimeMS && { maxIdleTimeMS: db.options?.maxIdleTimeMS }),
81
+ }))
82
+ );
83
+ }
84
+
85
+ cluster(): Promise<MongoClient> {
86
+ return Promise.resolve()
87
+ .then(() => this.client ?? (this.client = MongoProvider.client(this.coll.db)))
88
+ .catch(e => {
89
+ this.client = undefined;
90
+ return reject(e);
91
+ });
92
+ }
93
+
94
+ toMongoJson(query: Query): Json {
95
+ return toMongoType(asJson(query));
96
+ }
97
+
98
+ find(query: Query, options?: FindOptions): Promise<PageList<Json>> {
99
+ return tuple3(this.collection(), this.toMongoJson(query), this.toFindOptions(options))
100
+ .then(([c, q, o]) =>
101
+ tuple2(
102
+ c.find(q, o),
103
+ ifTrue(o.total, () => c.countDocuments(q))
104
+ )
105
+ )
106
+ .then(([res, total]) => this.toArray(res, options && { total }));
107
+ }
108
+
109
+ all(options?: FindOptions): Promise<PageList<Json>> {
110
+ return this.find({}, options);
111
+ }
112
+
113
+ byId(id: Id, options?: FindOptions): Promise<Json> {
114
+ return this.collection().then(c => c.findOne(this.toMongoJson({ id: asString(id) }), this.toFindOptions(options)) as Promise<Json>);
115
+ }
116
+
117
+ by(key: string, value: JsonValue, options?: FindOptions): Promise<PageList<Json>> {
118
+ return this.find({ [key]: asString(value) }, options);
119
+ }
120
+
121
+ group(qs: Filter<any>[]): Promise<PageList<Json>> {
122
+ return this.collection()
123
+ .then(c => c.aggregate(qs.map(q => this.toMongoJson(q))))
124
+ .then(res => this.toArray(res));
125
+ }
126
+
127
+ add(item: Json): Promise<Json> {
128
+ return this.collection()
129
+ .then(c => c.insertOne(omitId(item)))
130
+ .then(() => omitId(item));
131
+ }
132
+
133
+ update(item: Json): Promise<Json> {
134
+ return this.collection()
135
+ .then(c => c.updateOne(this.toMongoJson({ id: item.id }), { $set: omitId(item) }))
136
+ .then(() => this.byId(item.id as Id));
137
+ }
138
+
139
+ remove(id: Id): Promise<boolean> {
140
+ return this.collection()
141
+ .then(c => c.deleteOne(this.toMongoJson({ id })))
142
+ .then(d => d.acknowledged);
143
+ }
144
+
145
+ count(query?: Query): Promise<number> {
146
+ return this.collection().then(c => c.countDocuments(this.toMongoJson(query ?? {})));
147
+ }
148
+
149
+ createIndex(indexes: Indexes, options?: IndexOptions): Promise<string> {
150
+ return this.collection().then(c => c.createIndex(this.toIndexSpecification(indexes), this.toCreateIndexesOptions(options)));
151
+ }
152
+
153
+ createPartialIndex(indexes: Indexes, filter: Query, options?: Omit<IndexOptions, 'filter'>): Promise<string> {
154
+ return this.createIndex(indexes, { ...options, filter });
155
+ }
156
+
157
+ createTextIndex(indexes: OneOrMore<Field | string>, options?: IndexOptions): Promise<string> {
158
+ const ii = toArray(indexes).reduce((i, f) => ({ ...i, [asString(f)]: 'text' }), {});
159
+ return this.createIndex(ii, { unique: false, ...options });
160
+ }
161
+
162
+ collection(): Promise<MongoCollection> {
163
+ return this.cluster()
164
+ .then(c => c.db(this.coll.db.name))
165
+ .then(db => db.collection(asString(this.coll)));
166
+ }
167
+
168
+ protected toFindOptions(options?: FindOptions): MongoFindOptions & { total: boolean } {
169
+ return {
170
+ limit: options?.take ?? 250,
171
+ ...(options?.skip && { skip: options?.skip }),
172
+ ...(options?.sort && { sort: this.coll.sort(...(options?.sort ?? {})) as any }),
173
+ total: isDefined(options?.skip) || isDefined(options?.take),
174
+ projection: options?.projection ?? { _id: 0 },
175
+ };
176
+ }
177
+
178
+ protected toIndexSpecification(index: Indexes): IndexSpecification {
179
+ return choose(index)
180
+ .type(isField, f => f.property as IndexSpecification)
181
+ .type(isSortCondition, s => s.toJSON() as IndexSpecification)
182
+ .type(isArray, aa => aa.map(a => this.toIndexSpecification(a)) as IndexSpecification)
183
+ .else(i => i as IndexSpecification);
184
+ }
185
+
186
+ protected toCreateIndexesOptions(options?: IndexOptions): CreateIndexesOptions {
187
+ return {
188
+ unique: options?.unique ?? true,
189
+ ...(options?.languageOverride && { language_override: options.languageOverride }),
190
+ ...(options?.languageDefault && { default_language: options.languageDefault }),
191
+ ...(options?.filter && { partialFilterExpression: toMongoType(asJson(options.filter)) }),
192
+ writeConcern: { w: 1 },
193
+ };
194
+ }
195
+
196
+ protected toArray(
197
+ cursor: FindCursor<Document> | AggregationCursor<Document>,
198
+ options?: { take?: number; skip?: number; total?: number }
199
+ ): Promise<PageList<Json>> {
200
+ return cursor.toArray().then(r => toPageList<Json>(r, options));
201
+ }
202
202
  }