nongo-driver 3.3.4 → 3.3.6
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/model.d.ts +1 -0
- package/dist/model.js +70 -37
- package/dist/model.js.map +1 -1
- package/package.json +1 -1
- package/src/model.ts +191 -84
- package/test/models/dummy-model-changed-obj.ts +0 -12
- package/test/models/dummy-model-obj.ts +0 -40
- package/test/models/dummy-model-with-max-index-obj.ts +0 -195
- package/test/models/dummy-model-with-revision-obj.ts +0 -13
- package/test/models/text-index-model-modified-obj.ts +0 -12
- package/test/models/text-index-model-obj.ts +0 -11
- package/test/models/text-index-model-too-long-obj.ts +0 -11
package/dist/model.d.ts
CHANGED
package/dist/model.js
CHANGED
|
@@ -43,9 +43,13 @@ class Model {
|
|
|
43
43
|
}
|
|
44
44
|
this.collection = this.defineCollection();
|
|
45
45
|
this.collectionRevision = // e.g. BlockRevision
|
|
46
|
-
this.schemaVersioningEnabled()
|
|
46
|
+
this.schemaVersioningEnabled()
|
|
47
|
+
? `${this.defineCollection()}${nongo_1.default.REVISION}`
|
|
48
|
+
: null;
|
|
47
49
|
this.collectionEnvironmentMapping = // e.g. BlockEnvironmentMapping
|
|
48
|
-
this.schemaVersioningEnabled()
|
|
50
|
+
this.schemaVersioningEnabled()
|
|
51
|
+
? `${this.defineCollection()}${nongo_1.default.ENVIRONMENT_MAPPING}`
|
|
52
|
+
: null;
|
|
49
53
|
this.name = this.constructor.name;
|
|
50
54
|
this.dynamic = false;
|
|
51
55
|
this.initStructure();
|
|
@@ -70,13 +74,18 @@ class Model {
|
|
|
70
74
|
return this.obj._id.toHexString();
|
|
71
75
|
}
|
|
72
76
|
async getLatestRevisionNumber(name) {
|
|
73
|
-
const
|
|
74
|
-
const
|
|
75
|
-
|
|
77
|
+
const query = this.collection === 'FormModel' ? { key: name } : { name };
|
|
78
|
+
const liveObj = await this.db
|
|
79
|
+
.collection(this.collection)
|
|
80
|
+
.findOne(query, { sort: { revision: -1 } });
|
|
81
|
+
const revObj = await this.db
|
|
82
|
+
.collection(this.collectionRevision)
|
|
83
|
+
.findOne(query, { sort: { revision: -1 } });
|
|
84
|
+
let version = '0.0.1';
|
|
76
85
|
if (liveObj && revObj) {
|
|
77
|
-
(0, gt_1.default)(liveObj.revision, revObj.revision)
|
|
78
|
-
version = (0, inc_1.default)(liveObj.revision, 'patch')
|
|
79
|
-
version = (0, inc_1.default)(revObj.revision, 'patch');
|
|
86
|
+
(0, gt_1.default)(liveObj.revision, revObj.revision)
|
|
87
|
+
? (version = (0, inc_1.default)(liveObj.revision, 'patch'))
|
|
88
|
+
: (version = (0, inc_1.default)(revObj.revision, 'patch'));
|
|
80
89
|
}
|
|
81
90
|
else if (liveObj) {
|
|
82
91
|
version = (0, inc_1.default)(liveObj.revision, 'patch');
|
|
@@ -105,29 +114,39 @@ class Model {
|
|
|
105
114
|
}
|
|
106
115
|
}
|
|
107
116
|
if (this.collectionRevision) {
|
|
108
|
-
const query = mongodb_1.ObjectId.isValid(this.obj.environment)
|
|
117
|
+
const query = mongodb_1.ObjectId.isValid(this.obj.environment)
|
|
118
|
+
? { _id: new mongodb_1.ObjectId(this.obj.environment) }
|
|
119
|
+
: { isLive: true };
|
|
109
120
|
const clientEnv = await this.db.collection('Environment').findOne(query);
|
|
110
121
|
const environmentId = clientEnv._id.toHexString();
|
|
111
|
-
const { name } = this.obj;
|
|
112
|
-
this.obj.revision = await this.getLatestRevisionNumber(name);
|
|
122
|
+
const { name, key } = this.obj;
|
|
123
|
+
this.obj.revision = await this.getLatestRevisionNumber(name || key);
|
|
113
124
|
if (clientEnv.isLive) {
|
|
114
125
|
const revisionObjId = new mongodb_1.ObjectId();
|
|
115
|
-
const liveRevisionObject = await this.db
|
|
126
|
+
const liveRevisionObject = await this.db
|
|
127
|
+
.collection(this.collection)
|
|
128
|
+
.findOne({ _id: this.obj._id });
|
|
116
129
|
this.obj.history = nongo_1.default.revisionHistory(liveRevisionObject, revisionObjId);
|
|
117
130
|
await this.db
|
|
118
131
|
.collection(this.collection)
|
|
119
132
|
.replaceOne({ _id: this.obj._id }, this.obj, { upsert: true });
|
|
120
133
|
if (liveRevisionObject) {
|
|
121
134
|
liveRevisionObject._id = revisionObjId;
|
|
122
|
-
await this.db
|
|
135
|
+
await this.db
|
|
136
|
+
.collection(this.collectionRevision)
|
|
137
|
+
.insertOne(liveRevisionObject);
|
|
123
138
|
}
|
|
124
139
|
}
|
|
125
140
|
else {
|
|
126
|
-
const revisionObj = await this.db
|
|
141
|
+
const revisionObj = await this.db
|
|
142
|
+
.collection(this.collectionRevision)
|
|
143
|
+
.findOne({ _id: this.obj._id });
|
|
127
144
|
this.obj.history = nongo_1.default.revisionHistory(revisionObj, this.idString());
|
|
128
145
|
this.obj._id = new mongodb_1.ObjectId();
|
|
129
|
-
const r = await this.db
|
|
130
|
-
|
|
146
|
+
const r = await this.db
|
|
147
|
+
.collection(this.collectionRevision)
|
|
148
|
+
.insertOne(this.obj);
|
|
149
|
+
if (this.obj.revision !== '0.0.1') {
|
|
131
150
|
// update relevant mappings
|
|
132
151
|
const revisionId = revisionObj._id.toHexString();
|
|
133
152
|
const insertedId = r.insertedId.toHexString();
|
|
@@ -135,7 +154,7 @@ class Model {
|
|
|
135
154
|
await this.updateIntentEntityBlockMapping(revisionId, insertedId, environmentId);
|
|
136
155
|
}
|
|
137
156
|
}
|
|
138
|
-
if (this.obj.revision ===
|
|
157
|
+
if (this.obj.revision === '0.0.1') {
|
|
139
158
|
await this.createEnvironmentMapping(environmentId);
|
|
140
159
|
}
|
|
141
160
|
if (this.obj.deleted) {
|
|
@@ -153,41 +172,45 @@ class Model {
|
|
|
153
172
|
}
|
|
154
173
|
async removeEnvironmentMapping(environmentId) {
|
|
155
174
|
const path = `environments.${environmentId}`;
|
|
156
|
-
await this.db
|
|
175
|
+
await this.db
|
|
176
|
+
.collection(this.collectionEnvironmentMapping)
|
|
177
|
+
.updateOne({ originalId: this.idString() }, { $unset: { [path]: '' } });
|
|
157
178
|
}
|
|
158
179
|
async createEnvironmentMapping(environmentId) {
|
|
159
180
|
await this.db.collection(this.collectionEnvironmentMapping).insertOne({
|
|
160
181
|
originalId: this.idString(),
|
|
161
|
-
environments: { [environmentId]: this.idString() }
|
|
182
|
+
environments: { [environmentId]: this.idString() },
|
|
162
183
|
});
|
|
163
184
|
}
|
|
164
185
|
async updateEnvironmentMapping(revisionId, insertedId, environmentId) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
});
|
|
186
|
+
const path = `environments.${environmentId}`;
|
|
187
|
+
await this.db
|
|
188
|
+
.collection(this.collectionEnvironmentMapping)
|
|
189
|
+
.updateOne({ [path]: revisionId }, { $set: { [path]: insertedId } });
|
|
170
190
|
}
|
|
171
191
|
async updateIntentEntityBlockMapping(oldId, newId, environment) {
|
|
172
|
-
if (this.collection ===
|
|
192
|
+
if (this.collection === 'Block') {
|
|
173
193
|
// update intent and entity mappings
|
|
174
194
|
const filter = { block_id: oldId, environment };
|
|
175
|
-
const update = { $set: {
|
|
195
|
+
const update = { $set: { block_id: newId } };
|
|
176
196
|
await this.db.collection('IntentBlockMapping').updateMany(filter, update);
|
|
177
197
|
await this.db.collection('EntityBlockMapping').updateMany(filter, update);
|
|
178
198
|
}
|
|
179
|
-
else if (this.collection ===
|
|
199
|
+
else if (this.collection === 'Intent') {
|
|
180
200
|
// update intent mapping
|
|
181
201
|
const filter = { intent_id: oldId, environment };
|
|
182
|
-
const update = { $set: {
|
|
202
|
+
const update = { $set: { intent_id: newId } };
|
|
183
203
|
await this.db.collection('IntentBlockMapping').updateMany(filter, update);
|
|
184
204
|
}
|
|
185
|
-
else if (this.collection ===
|
|
205
|
+
else if (this.collection === 'Entity') {
|
|
186
206
|
// update entity mapping
|
|
187
207
|
const filter = { entity_id: oldId, environment };
|
|
188
|
-
const update = { $set: {
|
|
208
|
+
const update = { $set: { entity_id: newId } };
|
|
189
209
|
await this.db.collection('EntityBlockMapping').updateMany(filter, update);
|
|
190
210
|
}
|
|
211
|
+
else if (this.collection === 'FormModel') {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
191
214
|
else {
|
|
192
215
|
throw Error(`${this.collection} is unsupported revision type.`);
|
|
193
216
|
}
|
|
@@ -195,10 +218,14 @@ class Model {
|
|
|
195
218
|
async revertVersion(id, revisionId) {
|
|
196
219
|
const revisionObjId = new mongodb_1.ObjectId();
|
|
197
220
|
// get the actuall object
|
|
198
|
-
const obj = await this.db
|
|
221
|
+
const obj = await this.db
|
|
222
|
+
.collection(this.collection)
|
|
223
|
+
.findOne({ _id: new mongodb_1.ObjectId(id) });
|
|
199
224
|
// get revision
|
|
200
|
-
const objToRevert = await this.db
|
|
201
|
-
|
|
225
|
+
const objToRevert = await this.db
|
|
226
|
+
.collection(this.collectionRevision)
|
|
227
|
+
.findOne({ _id: new mongodb_1.ObjectId(revisionId) });
|
|
228
|
+
// update revision object
|
|
202
229
|
objToRevert.revision = nongo_1.default.revisionNumber(obj.revision);
|
|
203
230
|
objToRevert.history = nongo_1.default.revisionHistory(obj, revisionObjId);
|
|
204
231
|
delete objToRevert.diffs;
|
|
@@ -233,7 +260,9 @@ class Model {
|
|
|
233
260
|
return new this.constructor(this.nongo, doc);
|
|
234
261
|
}
|
|
235
262
|
async saveEnvironmentRevision(id, environmentId) {
|
|
236
|
-
const obj = await this.db
|
|
263
|
+
const obj = await this.db
|
|
264
|
+
.collection(this.collection)
|
|
265
|
+
.findOne({ _id: new mongodb_1.ObjectId(id) });
|
|
237
266
|
const revisionObj = (0, clone_deep_1.default)(obj);
|
|
238
267
|
revisionObj._id = new mongodb_1.ObjectId();
|
|
239
268
|
revisionObj.environment = environmentId;
|
|
@@ -243,7 +272,9 @@ class Model {
|
|
|
243
272
|
return new this.constructor(this.nongo, revisionObj);
|
|
244
273
|
}
|
|
245
274
|
async removeEnvironmentRevisions(environmentId) {
|
|
246
|
-
const result = await this.db
|
|
275
|
+
const result = await this.db
|
|
276
|
+
.collection(this.collectionRevision)
|
|
277
|
+
.deleteMany({ environment: environmentId });
|
|
247
278
|
return result;
|
|
248
279
|
}
|
|
249
280
|
/*
|
|
@@ -311,14 +342,16 @@ class Model {
|
|
|
311
342
|
return this.findOne({ _id: id });
|
|
312
343
|
}
|
|
313
344
|
async getRevisionHistory(history) {
|
|
314
|
-
const revisionIds = history.map(i => new mongodb_1.ObjectId(i.id));
|
|
345
|
+
const revisionIds = history.map((i) => new mongodb_1.ObjectId(i.id));
|
|
315
346
|
return this.toArray(await this.findIterator({ _id: { $in: revisionIds } }, { sort: { revision: 'descending' } }, this.collectionRevision));
|
|
316
347
|
}
|
|
317
348
|
async getRevisions(query, options) {
|
|
318
349
|
return this.toArray(await this.findIterator(query, options, this.collectionRevision));
|
|
319
350
|
}
|
|
320
351
|
async getRevision(query) {
|
|
321
|
-
const doc = await this.db
|
|
352
|
+
const doc = await this.db
|
|
353
|
+
.collection(this.collectionRevision)
|
|
354
|
+
.findOne(query);
|
|
322
355
|
// Return null if no doc was found
|
|
323
356
|
if (doc == null) {
|
|
324
357
|
return null;
|
package/dist/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/model.ts
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
import clone from 'clone-deep';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AggregateOptions,
|
|
4
|
+
AnyBulkWriteOperation,
|
|
5
|
+
BulkWriteOptions,
|
|
6
|
+
BulkWriteResult,
|
|
7
|
+
CountDocumentsOptions,
|
|
8
|
+
Db,
|
|
9
|
+
DeleteOptions,
|
|
10
|
+
DeleteResult,
|
|
11
|
+
Document,
|
|
12
|
+
Filter,
|
|
13
|
+
FindOptions,
|
|
14
|
+
ObjectId,
|
|
15
|
+
UpdateFilter,
|
|
16
|
+
UpdateOptions,
|
|
17
|
+
UpdateResult,
|
|
18
|
+
} from 'mongodb';
|
|
3
19
|
import {diff} from 'just-diff';
|
|
4
20
|
import semverGt from 'semver/functions/gt';
|
|
5
21
|
import incVersion from 'semver/functions/inc';
|
|
@@ -10,14 +26,14 @@ import MongoIndex from './mongo-index';
|
|
|
10
26
|
import Nongo from './nongo';
|
|
11
27
|
import Validator from './validator';
|
|
12
28
|
|
|
13
|
-
const DEFAULT_PATHS = ['_id', 'revision', 'history', 'diffs']
|
|
29
|
+
const DEFAULT_PATHS = ['_id', 'revision', 'history', 'diffs'];
|
|
14
30
|
|
|
15
31
|
function excludePathsFromDiff(diff, excludedPaths = DEFAULT_PATHS) {
|
|
16
32
|
return diff.filter((d) => {
|
|
17
33
|
if (!excludedPaths.includes(d.path[0])) {
|
|
18
34
|
return true;
|
|
19
35
|
}
|
|
20
|
-
})
|
|
36
|
+
});
|
|
21
37
|
}
|
|
22
38
|
|
|
23
39
|
export interface RevisionHistory {
|
|
@@ -26,7 +42,18 @@ export interface RevisionHistory {
|
|
|
26
42
|
created?: Date;
|
|
27
43
|
}
|
|
28
44
|
|
|
29
|
-
export default abstract class Model<
|
|
45
|
+
export default abstract class Model<
|
|
46
|
+
T extends {
|
|
47
|
+
_id?: ObjectId;
|
|
48
|
+
revision?: string;
|
|
49
|
+
history?: RevisionHistory[];
|
|
50
|
+
diffs?: any;
|
|
51
|
+
name?: string;
|
|
52
|
+
key?: string;
|
|
53
|
+
environment?: string;
|
|
54
|
+
deleted?: true;
|
|
55
|
+
} = any,
|
|
56
|
+
> {
|
|
30
57
|
// {@code instanceof} can be a bit funny when importing classes across
|
|
31
58
|
// modules so this is an explicit type guard we can use
|
|
32
59
|
public isNongoModel: true = true;
|
|
@@ -50,15 +77,19 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
50
77
|
|
|
51
78
|
this.collection = this.defineCollection();
|
|
52
79
|
this.collectionRevision = // e.g. BlockRevision
|
|
53
|
-
this.schemaVersioningEnabled()
|
|
80
|
+
this.schemaVersioningEnabled()
|
|
81
|
+
? `${this.defineCollection()}${Nongo.REVISION}`
|
|
82
|
+
: null;
|
|
54
83
|
this.collectionEnvironmentMapping = // e.g. BlockEnvironmentMapping
|
|
55
|
-
this.schemaVersioningEnabled()
|
|
84
|
+
this.schemaVersioningEnabled()
|
|
85
|
+
? `${this.defineCollection()}${Nongo.ENVIRONMENT_MAPPING}`
|
|
86
|
+
: null;
|
|
56
87
|
this.name = this.constructor.name;
|
|
57
88
|
this.dynamic = false;
|
|
58
89
|
this.initStructure();
|
|
59
90
|
}
|
|
60
91
|
|
|
61
|
-
public getCollectionRevision
|
|
92
|
+
public getCollectionRevision(): string {
|
|
62
93
|
return this.collectionRevision;
|
|
63
94
|
}
|
|
64
95
|
|
|
@@ -84,17 +115,22 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
84
115
|
}
|
|
85
116
|
|
|
86
117
|
private async getLatestRevisionNumber(name: string): Promise<string> {
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
|
|
118
|
+
const query = this.collection === 'FormModel' ? {key: name} : {name};
|
|
119
|
+
const liveObj = await this.db
|
|
120
|
+
.collection(this.collection)
|
|
121
|
+
.findOne(query, {sort: {revision: -1}});
|
|
122
|
+
const revObj = await this.db
|
|
123
|
+
.collection(this.collectionRevision)
|
|
124
|
+
.findOne(query, {sort: {revision: -1}});
|
|
125
|
+
let version = '0.0.1';
|
|
90
126
|
if (liveObj && revObj) {
|
|
91
|
-
semverGt(liveObj.revision, revObj.revision)
|
|
92
|
-
version = incVersion(liveObj.revision, 'patch')
|
|
93
|
-
version = incVersion(revObj.revision, 'patch');
|
|
127
|
+
semverGt(liveObj.revision, revObj.revision)
|
|
128
|
+
? (version = incVersion(liveObj.revision, 'patch'))
|
|
129
|
+
: (version = incVersion(revObj.revision, 'patch'));
|
|
94
130
|
} else if (liveObj) {
|
|
95
|
-
version = incVersion(liveObj.revision, 'patch')
|
|
131
|
+
version = incVersion(liveObj.revision, 'patch');
|
|
96
132
|
} else if (revObj) {
|
|
97
|
-
version = incVersion(revObj.revision, 'patch')
|
|
133
|
+
version = incVersion(revObj.revision, 'patch');
|
|
98
134
|
}
|
|
99
135
|
return version;
|
|
100
136
|
}
|
|
@@ -118,51 +154,72 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
118
154
|
this.throwValidationError(err);
|
|
119
155
|
}
|
|
120
156
|
}
|
|
121
|
-
|
|
157
|
+
|
|
122
158
|
if (this.collectionRevision) {
|
|
123
|
-
const query = ObjectId.isValid(this.obj.environment)
|
|
159
|
+
const query = ObjectId.isValid(this.obj.environment)
|
|
160
|
+
? {_id: new ObjectId(this.obj.environment)}
|
|
161
|
+
: {isLive: true};
|
|
124
162
|
const clientEnv = await this.db.collection('Environment').findOne(query);
|
|
125
163
|
const environmentId = clientEnv._id.toHexString();
|
|
126
164
|
|
|
127
|
-
const {name} = this.obj;
|
|
128
|
-
this.obj.revision = await this.getLatestRevisionNumber(name);
|
|
165
|
+
const {name, key} = this.obj;
|
|
166
|
+
this.obj.revision = await this.getLatestRevisionNumber(name || key);
|
|
129
167
|
|
|
130
168
|
if (clientEnv.isLive) {
|
|
131
169
|
const revisionObjId = new ObjectId();
|
|
132
|
-
const liveRevisionObject = await this.db
|
|
133
|
-
|
|
170
|
+
const liveRevisionObject = await this.db
|
|
171
|
+
.collection(this.collection)
|
|
172
|
+
.findOne({_id: this.obj._id});
|
|
173
|
+
this.obj.history = Nongo.revisionHistory(
|
|
174
|
+
liveRevisionObject,
|
|
175
|
+
revisionObjId,
|
|
176
|
+
);
|
|
134
177
|
await this.db
|
|
135
178
|
.collection(this.collection)
|
|
136
179
|
.replaceOne({_id: this.obj._id}, this.obj, {upsert: true});
|
|
137
180
|
if (liveRevisionObject) {
|
|
138
181
|
liveRevisionObject._id = revisionObjId;
|
|
139
|
-
await this.db
|
|
182
|
+
await this.db
|
|
183
|
+
.collection(this.collectionRevision)
|
|
184
|
+
.insertOne(liveRevisionObject);
|
|
140
185
|
}
|
|
141
186
|
} else {
|
|
142
|
-
const revisionObj = await this.db
|
|
143
|
-
|
|
187
|
+
const revisionObj = await this.db
|
|
188
|
+
.collection(this.collectionRevision)
|
|
189
|
+
.findOne({_id: this.obj._id});
|
|
190
|
+
|
|
144
191
|
this.obj.history = Nongo.revisionHistory(revisionObj, this.idString());
|
|
145
192
|
this.obj._id = new ObjectId();
|
|
146
|
-
const r = await this.db
|
|
147
|
-
|
|
193
|
+
const r = await this.db
|
|
194
|
+
.collection(this.collectionRevision)
|
|
195
|
+
.insertOne(this.obj);
|
|
196
|
+
if (this.obj.revision !== '0.0.1') {
|
|
148
197
|
// update relevant mappings
|
|
149
198
|
const revisionId = revisionObj._id.toHexString();
|
|
150
199
|
const insertedId = r.insertedId.toHexString();
|
|
151
|
-
await this.updateEnvironmentMapping(
|
|
152
|
-
|
|
200
|
+
await this.updateEnvironmentMapping(
|
|
201
|
+
revisionId,
|
|
202
|
+
insertedId,
|
|
203
|
+
environmentId,
|
|
204
|
+
);
|
|
205
|
+
await this.updateIntentEntityBlockMapping(
|
|
206
|
+
revisionId,
|
|
207
|
+
insertedId,
|
|
208
|
+
environmentId,
|
|
209
|
+
);
|
|
153
210
|
}
|
|
154
211
|
}
|
|
155
|
-
if (this.obj.revision ===
|
|
212
|
+
if (this.obj.revision === '0.0.1') {
|
|
156
213
|
await this.createEnvironmentMapping(environmentId);
|
|
157
214
|
}
|
|
158
215
|
if (this.obj.deleted) {
|
|
159
|
-
await this.removeEnvironmentMapping(environmentId)
|
|
216
|
+
await this.removeEnvironmentMapping(environmentId);
|
|
160
217
|
}
|
|
161
218
|
} else {
|
|
162
219
|
// Upsert non revision models
|
|
163
220
|
await this.db
|
|
164
|
-
|
|
165
|
-
|
|
221
|
+
.collection(this.collection)
|
|
222
|
+
.replaceOne({_id: this.obj._id}, this.obj, {upsert: true});
|
|
166
223
|
}
|
|
167
224
|
|
|
168
225
|
// Return the saved model
|
|
@@ -171,49 +228,53 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
171
228
|
|
|
172
229
|
private async removeEnvironmentMapping(environmentId: string): Promise<void> {
|
|
173
230
|
const path = `environments.${environmentId}`;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
)
|
|
231
|
+
await this.db
|
|
232
|
+
.collection(this.collectionEnvironmentMapping)
|
|
233
|
+
.updateOne({originalId: this.idString()}, {$unset: {[path]: ''}});
|
|
178
234
|
}
|
|
179
235
|
|
|
180
236
|
private async createEnvironmentMapping(environmentId: string): Promise<void> {
|
|
181
237
|
await this.db.collection(this.collectionEnvironmentMapping).insertOne({
|
|
182
238
|
originalId: this.idString(),
|
|
183
|
-
environments: {[environmentId]: this.idString()}
|
|
184
|
-
})
|
|
239
|
+
environments: {[environmentId]: this.idString()},
|
|
240
|
+
});
|
|
185
241
|
}
|
|
186
242
|
|
|
187
|
-
private async updateEnvironmentMapping(
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
)
|
|
243
|
+
private async updateEnvironmentMapping(
|
|
244
|
+
revisionId: string,
|
|
245
|
+
insertedId: string,
|
|
246
|
+
environmentId: string,
|
|
247
|
+
): Promise<void> {
|
|
248
|
+
const path = `environments.${environmentId}`;
|
|
249
|
+
await this.db
|
|
250
|
+
.collection(this.collectionEnvironmentMapping)
|
|
251
|
+
.updateOne({[path]: revisionId}, {$set: {[path]: insertedId}});
|
|
197
252
|
}
|
|
198
253
|
|
|
199
|
-
private async updateIntentEntityBlockMapping(
|
|
200
|
-
|
|
254
|
+
private async updateIntentEntityBlockMapping(
|
|
255
|
+
oldId: string,
|
|
256
|
+
newId: string,
|
|
257
|
+
environment: string,
|
|
258
|
+
): Promise<void> {
|
|
259
|
+
if (this.collection === 'Block') {
|
|
201
260
|
// update intent and entity mappings
|
|
202
|
-
const filter = {block_id: oldId, environment}
|
|
203
|
-
const update = {$set: {
|
|
261
|
+
const filter = {block_id: oldId, environment};
|
|
262
|
+
const update = {$set: {block_id: newId}};
|
|
204
263
|
await this.db.collection('IntentBlockMapping').updateMany(filter, update);
|
|
205
264
|
await this.db.collection('EntityBlockMapping').updateMany(filter, update);
|
|
206
|
-
} else if (this.collection ===
|
|
265
|
+
} else if (this.collection === 'Intent') {
|
|
207
266
|
// update intent mapping
|
|
208
|
-
const filter = {intent_id: oldId, environment}
|
|
209
|
-
const update = {$set: {
|
|
267
|
+
const filter = {intent_id: oldId, environment};
|
|
268
|
+
const update = {$set: {intent_id: newId}};
|
|
210
269
|
await this.db.collection('IntentBlockMapping').updateMany(filter, update);
|
|
211
|
-
} else if (this.collection ===
|
|
270
|
+
} else if (this.collection === 'Entity') {
|
|
212
271
|
// update entity mapping
|
|
213
|
-
const filter = {entity_id: oldId, environment}
|
|
214
|
-
const update = {$set: {
|
|
272
|
+
const filter = {entity_id: oldId, environment};
|
|
273
|
+
const update = {$set: {entity_id: newId}};
|
|
215
274
|
await this.db.collection('EntityBlockMapping').updateMany(filter, update);
|
|
216
|
-
} else {
|
|
275
|
+
} else if (this.collection === 'FormModel') {
|
|
276
|
+
return;
|
|
277
|
+
} else {
|
|
217
278
|
throw Error(`${this.collection} is unsupported revision type.`);
|
|
218
279
|
}
|
|
219
280
|
}
|
|
@@ -221,12 +282,16 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
221
282
|
public async revertVersion(id: string, revisionId: string): Promise<this> {
|
|
222
283
|
const revisionObjId = new ObjectId();
|
|
223
284
|
// get the actuall object
|
|
224
|
-
const obj = await this.db
|
|
225
|
-
|
|
285
|
+
const obj = await this.db
|
|
286
|
+
.collection(this.collection)
|
|
287
|
+
.findOne({_id: new ObjectId(id)});
|
|
288
|
+
|
|
226
289
|
// get revision
|
|
227
|
-
const objToRevert = await this.db
|
|
290
|
+
const objToRevert = await this.db
|
|
291
|
+
.collection(this.collectionRevision)
|
|
292
|
+
.findOne({_id: new ObjectId(revisionId)});
|
|
228
293
|
|
|
229
|
-
// update revision object
|
|
294
|
+
// update revision object
|
|
230
295
|
objToRevert.revision = Nongo.revisionNumber(obj.revision);
|
|
231
296
|
objToRevert.history = Nongo.revisionHistory(obj, revisionObjId);
|
|
232
297
|
delete objToRevert.diffs;
|
|
@@ -238,7 +303,6 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
238
303
|
.collection(this.collection)
|
|
239
304
|
.replaceOne({_id: obj._id}, objToRevert);
|
|
240
305
|
|
|
241
|
-
|
|
242
306
|
// make actuall object as revision object and save it to the revision collection
|
|
243
307
|
obj._id = revisionObjId;
|
|
244
308
|
await this.db.collection(this.collectionRevision).insertOne(obj);
|
|
@@ -248,7 +312,10 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
248
312
|
return new this.constructor(this.nongo, objToRevert);
|
|
249
313
|
}
|
|
250
314
|
|
|
251
|
-
public async getRevisionObjForEnvironment(
|
|
315
|
+
public async getRevisionObjForEnvironment(
|
|
316
|
+
isLive: boolean,
|
|
317
|
+
id: string,
|
|
318
|
+
): Promise<this> {
|
|
252
319
|
let doc;
|
|
253
320
|
const _id = new ObjectId(id);
|
|
254
321
|
|
|
@@ -268,8 +335,13 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
268
335
|
return new this.constructor(this.nongo, doc);
|
|
269
336
|
}
|
|
270
337
|
|
|
271
|
-
public async saveEnvironmentRevision(
|
|
272
|
-
|
|
338
|
+
public async saveEnvironmentRevision(
|
|
339
|
+
id: string,
|
|
340
|
+
environmentId: string,
|
|
341
|
+
): Promise<this> {
|
|
342
|
+
const obj = await this.db
|
|
343
|
+
.collection(this.collection)
|
|
344
|
+
.findOne({_id: new ObjectId(id)});
|
|
273
345
|
|
|
274
346
|
const revisionObj = clone(obj);
|
|
275
347
|
revisionObj._id = new ObjectId();
|
|
@@ -281,8 +353,12 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
281
353
|
return new this.constructor(this.nongo, revisionObj);
|
|
282
354
|
}
|
|
283
355
|
|
|
284
|
-
public async removeEnvironmentRevisions(
|
|
285
|
-
|
|
356
|
+
public async removeEnvironmentRevisions(
|
|
357
|
+
environmentId: string,
|
|
358
|
+
): Promise<DeleteResult> {
|
|
359
|
+
const result = await this.db
|
|
360
|
+
.collection(this.collectionRevision)
|
|
361
|
+
.deleteMany({environment: environmentId});
|
|
286
362
|
return result;
|
|
287
363
|
}
|
|
288
364
|
|
|
@@ -355,17 +431,30 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
355
431
|
return this.findOne({_id: id});
|
|
356
432
|
}
|
|
357
433
|
|
|
358
|
-
public async getRevisionHistory
|
|
359
|
-
const revisionIds = history.map(i => new ObjectId(i.id));
|
|
360
|
-
return this.toArray(
|
|
434
|
+
public async getRevisionHistory(history: RevisionHistory[]) {
|
|
435
|
+
const revisionIds = history.map((i) => new ObjectId(i.id));
|
|
436
|
+
return this.toArray(
|
|
437
|
+
await this.findIterator(
|
|
438
|
+
{_id: {$in: revisionIds}},
|
|
439
|
+
{sort: {revision: 'descending'}},
|
|
440
|
+
this.collectionRevision,
|
|
441
|
+
),
|
|
442
|
+
);
|
|
361
443
|
}
|
|
362
444
|
|
|
363
|
-
public async getRevisions(
|
|
364
|
-
|
|
445
|
+
public async getRevisions(
|
|
446
|
+
query: Filter<Document>,
|
|
447
|
+
options?: FindOptions<Document>,
|
|
448
|
+
): Promise<this[]> {
|
|
449
|
+
return this.toArray(
|
|
450
|
+
await this.findIterator(query, options, this.collectionRevision),
|
|
451
|
+
);
|
|
365
452
|
}
|
|
366
453
|
|
|
367
|
-
public async getRevision
|
|
368
|
-
const doc = await this.db
|
|
454
|
+
public async getRevision(query: Filter<Document>): Promise<this> {
|
|
455
|
+
const doc = await this.db
|
|
456
|
+
.collection(this.collectionRevision)
|
|
457
|
+
.findOne(query);
|
|
369
458
|
|
|
370
459
|
// Return null if no doc was found
|
|
371
460
|
if (doc == null) {
|
|
@@ -382,7 +471,10 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
382
471
|
* @param options: the query options e.g. sorting, limiting results etc.
|
|
383
472
|
* @return the results of the query as an array of models.
|
|
384
473
|
*/
|
|
385
|
-
public async find(
|
|
474
|
+
public async find(
|
|
475
|
+
query: Filter<Document> = {},
|
|
476
|
+
options?: FindOptions<Document>,
|
|
477
|
+
): Promise<this[]> {
|
|
386
478
|
return this.toArray(await this.findIterator(query, options));
|
|
387
479
|
}
|
|
388
480
|
|
|
@@ -402,7 +494,7 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
402
494
|
* @param options: the query options e.g. sorting, limiting results etc.
|
|
403
495
|
* @return the results of the query as an {@link AsyncIterator}.
|
|
404
496
|
*/
|
|
405
|
-
public async
|
|
497
|
+
public async findIterator(
|
|
406
498
|
query: Filter<Document> = {},
|
|
407
499
|
options?: FindOptions<Document>,
|
|
408
500
|
collection = this.collection,
|
|
@@ -411,7 +503,7 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
411
503
|
const cursor = this.db.collection(collection).find(query, options);
|
|
412
504
|
return new CursorIterator<this>(
|
|
413
505
|
cursor,
|
|
414
|
-
|
|
506
|
+
// @ts-ignore
|
|
415
507
|
(obj) => new this.constructor(this.nongo, obj),
|
|
416
508
|
);
|
|
417
509
|
}
|
|
@@ -434,12 +526,18 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
434
526
|
return new this.constructor(this.nongo, doc);
|
|
435
527
|
}
|
|
436
528
|
|
|
437
|
-
public async remove(
|
|
529
|
+
public async remove(
|
|
530
|
+
query: Filter<Document>,
|
|
531
|
+
options?: DeleteOptions,
|
|
532
|
+
): Promise<DeleteResult> {
|
|
438
533
|
query = this.prepareQuery(query);
|
|
439
534
|
return this.db.collection(this.collection).deleteMany(query, options);
|
|
440
535
|
}
|
|
441
536
|
|
|
442
|
-
public async aggregate(
|
|
537
|
+
public async aggregate(
|
|
538
|
+
pipeline: Document[],
|
|
539
|
+
options?: AggregateOptions,
|
|
540
|
+
): Promise<any[]> {
|
|
443
541
|
return this.toArray(await this.aggregateIterator(pipeline, options));
|
|
444
542
|
}
|
|
445
543
|
|
|
@@ -462,14 +560,21 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
462
560
|
return this.db.collection(this.collection).distinct(field, filter);
|
|
463
561
|
}
|
|
464
562
|
|
|
465
|
-
public async update(
|
|
563
|
+
public async update(
|
|
564
|
+
query: Filter<Document>,
|
|
565
|
+
updates: UpdateFilter<Document>,
|
|
566
|
+
options?: UpdateOptions,
|
|
567
|
+
): Promise<UpdateResult<Document>> {
|
|
466
568
|
query = this.prepareQuery(query);
|
|
467
569
|
return this.db
|
|
468
570
|
.collection(this.collection)
|
|
469
571
|
.updateMany(query, updates, options);
|
|
470
572
|
}
|
|
471
573
|
|
|
472
|
-
public async count(
|
|
574
|
+
public async count(
|
|
575
|
+
query: Document = {},
|
|
576
|
+
options?: CountDocumentsOptions,
|
|
577
|
+
): Promise<number> {
|
|
473
578
|
return this.db.collection(this.collection).countDocuments(query, options);
|
|
474
579
|
}
|
|
475
580
|
|
|
@@ -498,7 +603,9 @@ export default abstract class Model<T extends {_id?: ObjectId, revision?: string
|
|
|
498
603
|
if (typeof _id === 'string') {
|
|
499
604
|
query._id = Nongo.toObjectId(query._id);
|
|
500
605
|
} else if (_id.$in) {
|
|
501
|
-
_id.$in = _id.$in.map((el) =>
|
|
606
|
+
_id.$in = _id.$in.map((el) =>
|
|
607
|
+
typeof el === 'string' ? Nongo.toObjectId(el) : el,
|
|
608
|
+
);
|
|
502
609
|
}
|
|
503
610
|
|
|
504
611
|
return query;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface DummyModelChangedObj {
|
|
3
|
-
'name': string;
|
|
4
|
-
'pets': Array<{
|
|
5
|
-
'species'?: string;
|
|
6
|
-
'likes'?: {
|
|
7
|
-
'food'?: string[];
|
|
8
|
-
'drink'?: string[];
|
|
9
|
-
};
|
|
10
|
-
}>;
|
|
11
|
-
'_id'?: any;
|
|
12
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface DummyModelObj {
|
|
3
|
-
'dontStripChildren'?: any;
|
|
4
|
-
'dontStripChildren2'?: any;
|
|
5
|
-
'exampleMap'?: {[key: string]: {
|
|
6
|
-
'mapValueField': string;
|
|
7
|
-
}};
|
|
8
|
-
'created'?: Date;
|
|
9
|
-
'arrayOfObject'?: object[];
|
|
10
|
-
'name': string;
|
|
11
|
-
'age': number;
|
|
12
|
-
'pets': Array<{
|
|
13
|
-
'species'?: string;
|
|
14
|
-
'likes'?: {
|
|
15
|
-
'food'?: string[];
|
|
16
|
-
'drink'?: string[];
|
|
17
|
-
};
|
|
18
|
-
}>;
|
|
19
|
-
'job': {
|
|
20
|
-
'role': string;
|
|
21
|
-
'at'?: string;
|
|
22
|
-
};
|
|
23
|
-
'location'?: {
|
|
24
|
-
'address1'?: string;
|
|
25
|
-
};
|
|
26
|
-
'autoInit': {
|
|
27
|
-
'initArray': Array<{
|
|
28
|
-
'nestedObj': any;
|
|
29
|
-
}>;
|
|
30
|
-
'initNestedObj'?: {
|
|
31
|
-
'hello'?: string;
|
|
32
|
-
};
|
|
33
|
-
'initNestedNative'?: any;
|
|
34
|
-
};
|
|
35
|
-
'notEmptyFields'?: {
|
|
36
|
-
'aString': string;
|
|
37
|
-
'anArray': string[];
|
|
38
|
-
};
|
|
39
|
-
'_id'?: any;
|
|
40
|
-
}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface DummyModelWithMaxIndexObj {
|
|
3
|
-
'clients'?: {
|
|
4
|
-
'client1'?: {
|
|
5
|
-
'favouritePet'?: string;
|
|
6
|
-
};
|
|
7
|
-
'client2'?: {
|
|
8
|
-
'favouritePet'?: string;
|
|
9
|
-
};
|
|
10
|
-
'client3'?: {
|
|
11
|
-
'favouritePet'?: string;
|
|
12
|
-
};
|
|
13
|
-
'client4'?: {
|
|
14
|
-
'favouritePet'?: string;
|
|
15
|
-
};
|
|
16
|
-
'client5'?: {
|
|
17
|
-
'favouritePet'?: string;
|
|
18
|
-
};
|
|
19
|
-
'client6'?: {
|
|
20
|
-
'favouritePet'?: string;
|
|
21
|
-
};
|
|
22
|
-
'client7'?: {
|
|
23
|
-
'favouritePet'?: string;
|
|
24
|
-
};
|
|
25
|
-
'client8'?: {
|
|
26
|
-
'favouritePet'?: string;
|
|
27
|
-
};
|
|
28
|
-
'client9'?: {
|
|
29
|
-
'favouritePet'?: string;
|
|
30
|
-
};
|
|
31
|
-
'client10'?: {
|
|
32
|
-
'favouritePet'?: string;
|
|
33
|
-
};
|
|
34
|
-
'client11'?: {
|
|
35
|
-
'favouritePet'?: string;
|
|
36
|
-
};
|
|
37
|
-
'client12'?: {
|
|
38
|
-
'favouritePet'?: string;
|
|
39
|
-
};
|
|
40
|
-
'client13'?: {
|
|
41
|
-
'favouritePet'?: string;
|
|
42
|
-
};
|
|
43
|
-
'client14'?: {
|
|
44
|
-
'favouritePet'?: string;
|
|
45
|
-
};
|
|
46
|
-
'client15'?: {
|
|
47
|
-
'favouritePet'?: string;
|
|
48
|
-
};
|
|
49
|
-
'client16'?: {
|
|
50
|
-
'favouritePet'?: string;
|
|
51
|
-
};
|
|
52
|
-
'client17'?: {
|
|
53
|
-
'favouritePet'?: string;
|
|
54
|
-
};
|
|
55
|
-
'client18'?: {
|
|
56
|
-
'favouritePet'?: string;
|
|
57
|
-
};
|
|
58
|
-
'client19'?: {
|
|
59
|
-
'favouritePet'?: string;
|
|
60
|
-
};
|
|
61
|
-
'client20'?: {
|
|
62
|
-
'favouritePet'?: string;
|
|
63
|
-
};
|
|
64
|
-
'client21'?: {
|
|
65
|
-
'favouritePet'?: string;
|
|
66
|
-
};
|
|
67
|
-
'client22'?: {
|
|
68
|
-
'favouritePet'?: string;
|
|
69
|
-
};
|
|
70
|
-
'client23'?: {
|
|
71
|
-
'favouritePet'?: string;
|
|
72
|
-
};
|
|
73
|
-
'client24'?: {
|
|
74
|
-
'favouritePet'?: string;
|
|
75
|
-
};
|
|
76
|
-
'client25'?: {
|
|
77
|
-
'favouritePet'?: string;
|
|
78
|
-
};
|
|
79
|
-
'client26'?: {
|
|
80
|
-
'favouritePet'?: string;
|
|
81
|
-
};
|
|
82
|
-
'client27'?: {
|
|
83
|
-
'favouritePet'?: string;
|
|
84
|
-
};
|
|
85
|
-
'client28'?: {
|
|
86
|
-
'favouritePet'?: string;
|
|
87
|
-
};
|
|
88
|
-
'client29'?: {
|
|
89
|
-
'favouritePet'?: string;
|
|
90
|
-
};
|
|
91
|
-
'client30'?: {
|
|
92
|
-
'favouritePet'?: string;
|
|
93
|
-
};
|
|
94
|
-
'client31'?: {
|
|
95
|
-
'favouritePet'?: string;
|
|
96
|
-
};
|
|
97
|
-
'client32'?: {
|
|
98
|
-
'favouritePet'?: string;
|
|
99
|
-
};
|
|
100
|
-
'client33'?: {
|
|
101
|
-
'favouritePet'?: string;
|
|
102
|
-
};
|
|
103
|
-
'client34'?: {
|
|
104
|
-
'favouritePet'?: string;
|
|
105
|
-
};
|
|
106
|
-
'client35'?: {
|
|
107
|
-
'favouritePet'?: string;
|
|
108
|
-
};
|
|
109
|
-
'client36'?: {
|
|
110
|
-
'favouritePet'?: string;
|
|
111
|
-
};
|
|
112
|
-
'client37'?: {
|
|
113
|
-
'favouritePet'?: string;
|
|
114
|
-
};
|
|
115
|
-
'client38'?: {
|
|
116
|
-
'favouritePet'?: string;
|
|
117
|
-
};
|
|
118
|
-
'client39'?: {
|
|
119
|
-
'favouritePet'?: string;
|
|
120
|
-
};
|
|
121
|
-
'client40'?: {
|
|
122
|
-
'favouritePet'?: string;
|
|
123
|
-
};
|
|
124
|
-
'client41'?: {
|
|
125
|
-
'favouritePet'?: string;
|
|
126
|
-
};
|
|
127
|
-
'client42'?: {
|
|
128
|
-
'favouritePet'?: string;
|
|
129
|
-
};
|
|
130
|
-
'client43'?: {
|
|
131
|
-
'favouritePet'?: string;
|
|
132
|
-
};
|
|
133
|
-
'client44'?: {
|
|
134
|
-
'favouritePet'?: string;
|
|
135
|
-
};
|
|
136
|
-
'client45'?: {
|
|
137
|
-
'favouritePet'?: string;
|
|
138
|
-
};
|
|
139
|
-
'client46'?: {
|
|
140
|
-
'favouritePet'?: string;
|
|
141
|
-
};
|
|
142
|
-
'client47'?: {
|
|
143
|
-
'favouritePet'?: string;
|
|
144
|
-
};
|
|
145
|
-
'client48'?: {
|
|
146
|
-
'favouritePet'?: string;
|
|
147
|
-
};
|
|
148
|
-
'client49'?: {
|
|
149
|
-
'favouritePet'?: string;
|
|
150
|
-
};
|
|
151
|
-
'client50'?: {
|
|
152
|
-
'favouritePet'?: string;
|
|
153
|
-
};
|
|
154
|
-
'client51'?: {
|
|
155
|
-
'favouritePet'?: string;
|
|
156
|
-
};
|
|
157
|
-
'client52'?: {
|
|
158
|
-
'favouritePet'?: string;
|
|
159
|
-
};
|
|
160
|
-
'client53'?: {
|
|
161
|
-
'favouritePet'?: string;
|
|
162
|
-
};
|
|
163
|
-
'client54'?: {
|
|
164
|
-
'favouritePet'?: string;
|
|
165
|
-
};
|
|
166
|
-
'client55'?: {
|
|
167
|
-
'favouritePet'?: string;
|
|
168
|
-
};
|
|
169
|
-
'client56'?: {
|
|
170
|
-
'favouritePet'?: string;
|
|
171
|
-
};
|
|
172
|
-
'client57'?: {
|
|
173
|
-
'favouritePet'?: string;
|
|
174
|
-
};
|
|
175
|
-
'client58'?: {
|
|
176
|
-
'favouritePet'?: string;
|
|
177
|
-
};
|
|
178
|
-
'client59'?: {
|
|
179
|
-
'favouritePet'?: string;
|
|
180
|
-
};
|
|
181
|
-
'client60'?: {
|
|
182
|
-
'favouritePet'?: string;
|
|
183
|
-
};
|
|
184
|
-
'client61'?: {
|
|
185
|
-
'favouritePet'?: string;
|
|
186
|
-
};
|
|
187
|
-
'client62'?: {
|
|
188
|
-
'favouritePet'?: string;
|
|
189
|
-
};
|
|
190
|
-
'client63'?: {
|
|
191
|
-
'favouritePet'?: string;
|
|
192
|
-
};
|
|
193
|
-
};
|
|
194
|
-
'_id'?: any;
|
|
195
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface DummyModelWithRevisionObj {
|
|
3
|
-
'revision'?: string;
|
|
4
|
-
'history'?: Array<{
|
|
5
|
-
'id'?: string;
|
|
6
|
-
'revision'?: string;
|
|
7
|
-
'created'?: Date;
|
|
8
|
-
}>;
|
|
9
|
-
'created': Date;
|
|
10
|
-
'name': string;
|
|
11
|
-
'age'?: number;
|
|
12
|
-
'_id'?: any;
|
|
13
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface TextIndexModelModifiedObj {
|
|
3
|
-
'name'?: string;
|
|
4
|
-
'module'?: string;
|
|
5
|
-
'description'?: {
|
|
6
|
-
'en'?: string;
|
|
7
|
-
'cy'?: string;
|
|
8
|
-
'es'?: string;
|
|
9
|
-
};
|
|
10
|
-
'summary'?: string;
|
|
11
|
-
'_id'?: any;
|
|
12
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// This file was generated using nongo-driver's TsInterfaceGenerator.
|
|
2
|
-
export default interface TextIndexModelTooLongObj {
|
|
3
|
-
'name'?: string;
|
|
4
|
-
'module'?: string;
|
|
5
|
-
'description'?: {
|
|
6
|
-
'en'?: string;
|
|
7
|
-
'cy'?: string;
|
|
8
|
-
};
|
|
9
|
-
'summary'?: string;
|
|
10
|
-
'_id'?: any;
|
|
11
|
-
}
|