@thisisagile/easy-mongo 8.46.3 → 9.0.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/MongoProvider.d.ts +10 -11
- package/dist/MongoProvider.js +11 -19
- package/dist/MongoProvider.js.map +1 -1
- package/package.json +4 -5
- package/src/MongoProvider.ts +20 -31
package/dist/MongoProvider.d.ts
CHANGED
|
@@ -1,32 +1,31 @@
|
|
|
1
1
|
import { Condition, Database, Field, Id, Json, JsonValue, List, LogicalCondition, SortCondition } from '@thisisagile/easy';
|
|
2
|
-
import { Collection as MongoCollection,
|
|
2
|
+
import { Collection as MongoCollection, Filter as MongoFilter, MongoClient } from 'mongodb';
|
|
3
3
|
import { Collection } from './Collection';
|
|
4
4
|
export declare type FindOptions = {
|
|
5
5
|
limit?: number;
|
|
6
6
|
skip?: number;
|
|
7
7
|
sort?: SortCondition[];
|
|
8
8
|
};
|
|
9
|
-
export declare type
|
|
9
|
+
export declare type Filter<T> = MongoFilter<T>;
|
|
10
10
|
export declare class MongoProvider {
|
|
11
11
|
readonly coll: Collection;
|
|
12
12
|
private client?;
|
|
13
13
|
constructor(coll: Collection, client?: Promise<MongoClient> | undefined);
|
|
14
|
+
static client(db: Database): Promise<MongoClient>;
|
|
14
15
|
cluster(): Promise<MongoClient>;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
toMongoJson(query: Condition | LogicalCondition | FilterQuery<any>): Json;
|
|
18
|
-
find(query: Condition | LogicalCondition | FilterQuery<any>, options?: FindOptions): Promise<List<Json>>;
|
|
16
|
+
toMongoJson(query: Condition | LogicalCondition | Filter<any>): Json;
|
|
17
|
+
find(query: Condition | LogicalCondition | Filter<any>, options?: FindOptions): Promise<List<Json>>;
|
|
19
18
|
all(options?: FindOptions): Promise<List<Json>>;
|
|
20
19
|
byId(id: Id): Promise<Json>;
|
|
21
20
|
by(key: string, value: JsonValue, options?: FindOptions): Promise<List<Json>>;
|
|
22
|
-
group(qs:
|
|
23
|
-
aggregate: (qs:
|
|
24
|
-
add(
|
|
21
|
+
group(qs: Filter<any>[]): Promise<Json[]>;
|
|
22
|
+
aggregate: (qs: Filter<any>[]) => Promise<Json[]>;
|
|
23
|
+
add(item: Json): Promise<Json>;
|
|
25
24
|
update(item: Json): Promise<Json>;
|
|
26
25
|
remove(id: Id): Promise<boolean>;
|
|
27
|
-
count(query?: Condition | LogicalCondition |
|
|
26
|
+
count(query?: Condition | LogicalCondition | Filter<any>): Promise<number>;
|
|
28
27
|
createIndex(field: string | any, unique?: boolean): Promise<string>;
|
|
29
|
-
createPartialIndex(field: string | any, filter: Condition | LogicalCondition |
|
|
28
|
+
createPartialIndex(field: string | any, filter: Condition | LogicalCondition | Filter<any>, unique?: boolean): Promise<string>;
|
|
30
29
|
createTextIndexes(...fields: Field[]): Promise<string>;
|
|
31
30
|
collection(): Promise<MongoCollection>;
|
|
32
31
|
}
|
package/dist/MongoProvider.js
CHANGED
|
@@ -15,27 +15,19 @@ class MongoProvider {
|
|
|
15
15
|
this.client = client;
|
|
16
16
|
this.aggregate = this.group;
|
|
17
17
|
}
|
|
18
|
+
static client(db) {
|
|
19
|
+
return (0, easy_1.when)(db.options?.cluster)
|
|
20
|
+
.not.isDefined.reject(easy_1.Exception.IsNotValid.because('Missing cluster in database options.'))
|
|
21
|
+
.then(u => new mongodb_1.MongoClient(u, { auth: { username: (0, easy_1.asString)(db.options?.user), password: (0, easy_1.asString)(db.options?.password) } }));
|
|
22
|
+
}
|
|
18
23
|
cluster() {
|
|
19
24
|
return Promise.resolve()
|
|
20
|
-
.then(() => this.client ?? (this.client = MongoProvider.
|
|
25
|
+
.then(() => this.client ?? (this.client = MongoProvider.client(this.coll.db)))
|
|
21
26
|
.catch(e => {
|
|
22
27
|
this.client = undefined;
|
|
23
28
|
return (0, easy_1.reject)(e);
|
|
24
29
|
});
|
|
25
30
|
}
|
|
26
|
-
reconnect(client) {
|
|
27
|
-
this.client = client.isConnected() ? Promise.resolve(client) : undefined;
|
|
28
|
-
return this.cluster();
|
|
29
|
-
}
|
|
30
|
-
static connect(db) {
|
|
31
|
-
return (0, easy_1.when)(db.options?.cluster)
|
|
32
|
-
.not.isDefined.reject(new easy_1.Exception('Missing cluster in database options.'))
|
|
33
|
-
.then(u => new mongodb_1.MongoClient(u, {
|
|
34
|
-
useNewUrlParser: true,
|
|
35
|
-
useUnifiedTopology: true,
|
|
36
|
-
auth: { user: (0, easy_1.asString)(db.options?.user), password: (0, easy_1.asString)(db.options?.password) },
|
|
37
|
-
}).connect());
|
|
38
|
-
}
|
|
39
31
|
toMongoJson(query) {
|
|
40
32
|
return (0, Utils_1.toMongoType)((0, easy_1.asJson)(query));
|
|
41
33
|
}
|
|
@@ -62,10 +54,10 @@ class MongoProvider {
|
|
|
62
54
|
.then(c => c.aggregate(qs.map(q => this.toMongoJson(q))))
|
|
63
55
|
.then(res => res.toArray());
|
|
64
56
|
}
|
|
65
|
-
add(
|
|
57
|
+
add(item) {
|
|
66
58
|
return this.collection()
|
|
67
|
-
.then(c => c.insertOne(omitId(
|
|
68
|
-
.then(
|
|
59
|
+
.then(c => c.insertOne(omitId(item)))
|
|
60
|
+
.then(() => omitId(item));
|
|
69
61
|
}
|
|
70
62
|
update(item) {
|
|
71
63
|
return this.collection()
|
|
@@ -75,7 +67,7 @@ class MongoProvider {
|
|
|
75
67
|
remove(id) {
|
|
76
68
|
return this.collection()
|
|
77
69
|
.then(c => c.deleteOne(this.toMongoJson({ id })))
|
|
78
|
-
.then(d => d.
|
|
70
|
+
.then(d => d.acknowledged);
|
|
79
71
|
}
|
|
80
72
|
count(query) {
|
|
81
73
|
return this.collection().then(c => c.countDocuments(this.toMongoJson(query ?? {})));
|
|
@@ -92,7 +84,7 @@ class MongoProvider {
|
|
|
92
84
|
}
|
|
93
85
|
collection() {
|
|
94
86
|
return this.cluster()
|
|
95
|
-
.then(c =>
|
|
87
|
+
.then(c => c.connect())
|
|
96
88
|
.then(c => c.db(this.coll.db.name))
|
|
97
89
|
.then(db => db.collection((0, easy_1.asString)(this.coll)));
|
|
98
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoProvider.js","sourceRoot":"","sources":["../src/MongoProvider.ts"],"names":[],"mappings":";;;AAAA,4CAiB2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"MongoProvider.js","sourceRoot":"","sources":["../src/MongoProvider.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": "
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"description": "Add support for MongoDB",
|
|
5
5
|
"author": "Sander Hoogendoorn",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,11 +31,10 @@
|
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@thisisagile/easy-test": "
|
|
34
|
+
"@thisisagile/easy-test": "9.0.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@thisisagile/easy": "
|
|
38
|
-
"
|
|
39
|
-
"mongodb": "^3.7.3"
|
|
37
|
+
"@thisisagile/easy": "9.0.0",
|
|
38
|
+
"mongodb": "^4.5.0"
|
|
40
39
|
}
|
|
41
40
|
}
|
package/src/MongoProvider.ts
CHANGED
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
toList,
|
|
17
17
|
when,
|
|
18
18
|
} from '@thisisagile/easy';
|
|
19
|
-
import { Collection as MongoCollection,
|
|
19
|
+
import { Collection as MongoCollection, Filter as MongoFilter, MongoClient } from 'mongodb';
|
|
20
20
|
import { Collection } from './Collection';
|
|
21
21
|
import { toMongoType } from './Utils';
|
|
22
22
|
|
|
@@ -31,42 +31,31 @@ export type FindOptions = {
|
|
|
31
31
|
sort?: SortCondition[];
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
export type
|
|
34
|
+
export type Filter<T> = MongoFilter<T>;
|
|
35
35
|
|
|
36
36
|
export class MongoProvider {
|
|
37
37
|
constructor(readonly coll: Collection, private client?: Promise<MongoClient>) {}
|
|
38
38
|
|
|
39
|
+
static client(db: Database): Promise<MongoClient> {
|
|
40
|
+
return when(db.options?.cluster)
|
|
41
|
+
.not.isDefined.reject(Exception.IsNotValid.because('Missing cluster in database options.'))
|
|
42
|
+
.then(u => new MongoClient(u, { auth: { username: asString(db.options?.user), password: asString(db.options?.password) } }));
|
|
43
|
+
}
|
|
44
|
+
|
|
39
45
|
cluster(): Promise<MongoClient> {
|
|
40
46
|
return Promise.resolve()
|
|
41
|
-
.then(() => this.client ?? (this.client = MongoProvider.
|
|
47
|
+
.then(() => this.client ?? (this.client = MongoProvider.client(this.coll.db)))
|
|
42
48
|
.catch(e => {
|
|
43
49
|
this.client = undefined;
|
|
44
50
|
return reject(e);
|
|
45
51
|
});
|
|
46
52
|
}
|
|
47
53
|
|
|
48
|
-
|
|
49
|
-
this.client = client.isConnected() ? Promise.resolve(client) : undefined;
|
|
50
|
-
return this.cluster();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
static connect(db: Database): Promise<MongoClient> {
|
|
54
|
-
return when(db.options?.cluster)
|
|
55
|
-
.not.isDefined.reject(new Exception('Missing cluster in database options.'))
|
|
56
|
-
.then(u =>
|
|
57
|
-
new MongoClient(u, {
|
|
58
|
-
useNewUrlParser: true,
|
|
59
|
-
useUnifiedTopology: true,
|
|
60
|
-
auth: { user: asString(db.options?.user), password: asString(db.options?.password) },
|
|
61
|
-
}).connect()
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
toMongoJson(query: Condition | LogicalCondition | FilterQuery<any>): Json {
|
|
54
|
+
toMongoJson(query: Condition | LogicalCondition | Filter<any>): Json {
|
|
66
55
|
return toMongoType(asJson(query));
|
|
67
56
|
}
|
|
68
57
|
|
|
69
|
-
find(query: Condition | LogicalCondition |
|
|
58
|
+
find(query: Condition | LogicalCondition | Filter<any>, options: FindOptions = { limit: 250 }): Promise<List<Json>> {
|
|
70
59
|
return this.collection()
|
|
71
60
|
.then(c => c.find(this.toMongoJson(query), { ...options, limit: options.limit ?? 250, sort: this.coll.sort(...(options.sort ?? [])) as any }))
|
|
72
61
|
.then(res => res.toArray())
|
|
@@ -81,14 +70,14 @@ export class MongoProvider {
|
|
|
81
70
|
byId(id: Id): Promise<Json> {
|
|
82
71
|
return this.collection()
|
|
83
72
|
.then(c => c.findOne(this.toMongoJson({ id: asString(id) })))
|
|
84
|
-
.then(i => omitId(i));
|
|
73
|
+
.then(i => omitId(i as Json));
|
|
85
74
|
}
|
|
86
75
|
|
|
87
76
|
by(key: string, value: JsonValue, options?: FindOptions): Promise<List<Json>> {
|
|
88
77
|
return this.find({ [key]: asString(value) }, options);
|
|
89
78
|
}
|
|
90
79
|
|
|
91
|
-
group(qs:
|
|
80
|
+
group(qs: Filter<any>[]): Promise<Json[]> {
|
|
92
81
|
return this.collection()
|
|
93
82
|
.then(c => c.aggregate(qs.map(q => this.toMongoJson(q))))
|
|
94
83
|
.then(res => res.toArray());
|
|
@@ -96,10 +85,10 @@ export class MongoProvider {
|
|
|
96
85
|
|
|
97
86
|
aggregate = this.group;
|
|
98
87
|
|
|
99
|
-
add(
|
|
88
|
+
add(item: Json): Promise<Json> {
|
|
100
89
|
return this.collection()
|
|
101
|
-
.then(c => c.insertOne(omitId(
|
|
102
|
-
.then(
|
|
90
|
+
.then(c => c.insertOne(omitId(item)))
|
|
91
|
+
.then(() => omitId(item));
|
|
103
92
|
}
|
|
104
93
|
|
|
105
94
|
update(item: Json): Promise<Json> {
|
|
@@ -111,10 +100,10 @@ export class MongoProvider {
|
|
|
111
100
|
remove(id: Id): Promise<boolean> {
|
|
112
101
|
return this.collection()
|
|
113
102
|
.then(c => c.deleteOne(this.toMongoJson({ id })))
|
|
114
|
-
.then(d => d.
|
|
103
|
+
.then(d => d.acknowledged);
|
|
115
104
|
}
|
|
116
105
|
|
|
117
|
-
count(query?: Condition | LogicalCondition |
|
|
106
|
+
count(query?: Condition | LogicalCondition | Filter<any>): Promise<number> {
|
|
118
107
|
return this.collection().then(c => c.countDocuments(this.toMongoJson(query ?? {})));
|
|
119
108
|
}
|
|
120
109
|
|
|
@@ -122,7 +111,7 @@ export class MongoProvider {
|
|
|
122
111
|
return this.collection().then(c => c.createIndex(field, { unique, writeConcern: { w: 1 } }));
|
|
123
112
|
}
|
|
124
113
|
|
|
125
|
-
createPartialIndex(field: string | any, filter: Condition | LogicalCondition |
|
|
114
|
+
createPartialIndex(field: string | any, filter: Condition | LogicalCondition | Filter<any>, unique = true): Promise<string> {
|
|
126
115
|
return this.collection().then(c => c.createIndex(field, { partialFilterExpression: toMongoType(asJson(filter)), unique, writeConcern: { w: 1 } }));
|
|
127
116
|
}
|
|
128
117
|
|
|
@@ -133,7 +122,7 @@ export class MongoProvider {
|
|
|
133
122
|
|
|
134
123
|
collection(): Promise<MongoCollection> {
|
|
135
124
|
return this.cluster()
|
|
136
|
-
.then(c =>
|
|
125
|
+
.then(c => c.connect())
|
|
137
126
|
.then(c => c.db(this.coll.db.name))
|
|
138
127
|
.then(db => db.collection(asString(this.coll)));
|
|
139
128
|
}
|