@webda/mongo 4.0.0-beta.2 → 4.0.0-beta.3
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/README.md +118 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/mongodb.service.d.ts +175 -0
- package/lib/mongodb.service.d.ts.map +1 -0
- package/lib/mongodb.service.js +473 -0
- package/lib/mongodb.service.js.map +1 -0
- package/package.json +29 -35
- package/test/config.json +5 -0
- package/webda.module.json +353 -396
- package/lib/mongodb.d.ts +0 -133
- package/lib/mongodb.d.ts.map +0 -1
- package/lib/mongodb.js +0 -359
- package/lib/mongodb.js.map +0 -1
- package/lib/mongodb.spec.d.ts +0 -2
- package/lib/mongodb.spec.d.ts.map +0 -1
- package/lib/mongodb.spec.js +0 -38
- package/lib/mongodb.spec.js.map +0 -1
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
import { EventRepository, InstanceCache, MemoryRepository, Store, StoreNotFoundError, StoreParameters, UpdateConditionFailError, useModelMetadata } from "@webda/core";
|
|
36
|
+
import * as WebdaQL from "@webda/ql";
|
|
37
|
+
import { MongoClient } from "mongodb";
|
|
38
|
+
/**
|
|
39
|
+
* MongoDB store parameters
|
|
40
|
+
*/
|
|
41
|
+
export class MongoParameters extends StoreParameters {
|
|
42
|
+
/**
|
|
43
|
+
* @override
|
|
44
|
+
* @param params - raw parameters
|
|
45
|
+
* @returns this
|
|
46
|
+
*/
|
|
47
|
+
load(params = {}) {
|
|
48
|
+
super.load(params);
|
|
49
|
+
this.mongoUrl ?? (this.mongoUrl = process.env["WEBDA_MONGO_URL"]);
|
|
50
|
+
if (this.mongoUrl === undefined) {
|
|
51
|
+
throw new Error("An URL is required for MongoDB service");
|
|
52
|
+
}
|
|
53
|
+
this.options ?? (this.options = {});
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a mongodb query object from WebdaQL
|
|
59
|
+
* @param expression - the WebdaQL expression
|
|
60
|
+
* @returns the MongoDB filter
|
|
61
|
+
*/
|
|
62
|
+
export function mapExpression(expression) {
|
|
63
|
+
if (expression instanceof WebdaQL.BooleanExpression) {
|
|
64
|
+
// TRUE matches every document, FALSE none: never let FALSE fail open
|
|
65
|
+
return expression.value ? {} : { $expr: false };
|
|
66
|
+
}
|
|
67
|
+
else if (expression instanceof WebdaQL.AndExpression) {
|
|
68
|
+
const children = expression.children.map(e => mapExpression(e));
|
|
69
|
+
if (children.some(c => c.$expr === false)) {
|
|
70
|
+
return { $expr: false };
|
|
71
|
+
}
|
|
72
|
+
// Use $and so two conditions on the same attribute do not override each other
|
|
73
|
+
const nonEmpty = children.filter(c => Object.keys(c).length > 0);
|
|
74
|
+
if (nonEmpty.length === 0) {
|
|
75
|
+
return {};
|
|
76
|
+
}
|
|
77
|
+
if (nonEmpty.length === 1) {
|
|
78
|
+
return nonEmpty[0];
|
|
79
|
+
}
|
|
80
|
+
return { $and: nonEmpty };
|
|
81
|
+
}
|
|
82
|
+
else if (expression instanceof WebdaQL.OrExpression) {
|
|
83
|
+
// An empty OR matches everything (as OrExpression.eval) and $or rejects an empty array
|
|
84
|
+
if (expression.children.length === 0) {
|
|
85
|
+
return {};
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
$or: expression.children.map(e => mapExpression(e))
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
else if (expression instanceof WebdaQL.ComparisonExpression) {
|
|
92
|
+
const attribute = expression.attribute.join(".");
|
|
93
|
+
switch (expression.operator) {
|
|
94
|
+
case "=":
|
|
95
|
+
case "CONTAINS":
|
|
96
|
+
// MongoDB use same syntax for exact match or contains for an array
|
|
97
|
+
return { [attribute]: expression.value };
|
|
98
|
+
case "<":
|
|
99
|
+
return { [attribute]: { $lt: expression.value } };
|
|
100
|
+
case ">":
|
|
101
|
+
return { [attribute]: { $gt: expression.value } };
|
|
102
|
+
case "<=":
|
|
103
|
+
return { [attribute]: { $lte: expression.value } };
|
|
104
|
+
case ">=":
|
|
105
|
+
return { [attribute]: { $gte: expression.value } };
|
|
106
|
+
case "!=":
|
|
107
|
+
return { [attribute]: { $ne: expression.value } };
|
|
108
|
+
case "IN":
|
|
109
|
+
return { [attribute]: { $in: expression.value } };
|
|
110
|
+
case "LIKE":
|
|
111
|
+
return { [attribute]: WebdaQL.ComparisonExpression.likeToRegex(expression.value) };
|
|
112
|
+
case "IS NULL":
|
|
113
|
+
// Matches documents where the field is null or missing
|
|
114
|
+
return { [attribute]: null };
|
|
115
|
+
case "IS NOT NULL":
|
|
116
|
+
// Matches documents where the field exists and is not null
|
|
117
|
+
return { [attribute]: { $ne: null } };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return {};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* MongoDB-backed repository for a single model class
|
|
124
|
+
*
|
|
125
|
+
* Every object is stored as a plain document with `_id` set to its primary key
|
|
126
|
+
* and `__type` set to its model identifier, so several models can share one
|
|
127
|
+
* collection. The inherited MemoryRepository helpers are only used for primary
|
|
128
|
+
* key and class filter computation.
|
|
129
|
+
*/
|
|
130
|
+
export class MongoRepository extends MemoryRepository {
|
|
131
|
+
/**
|
|
132
|
+
* @param model - the model class
|
|
133
|
+
* @param pks - primary key field names
|
|
134
|
+
* @param getCollection - return the collection, connecting if needed
|
|
135
|
+
* @param separator - composite key separator
|
|
136
|
+
*/
|
|
137
|
+
constructor(model, pks, getCollection, separator) {
|
|
138
|
+
super(model, pks, separator);
|
|
139
|
+
this.getCollection = getCollection;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Convert an object to the document stored in MongoDB
|
|
143
|
+
* @param item - the model instance or raw data
|
|
144
|
+
* @param key - the primary key
|
|
145
|
+
* @returns the document
|
|
146
|
+
*/
|
|
147
|
+
toDocument(item, key) {
|
|
148
|
+
const doc = JSON.parse(JSON.stringify(item));
|
|
149
|
+
doc._id = key;
|
|
150
|
+
const type = item?.constructor?.Metadata?.Identifier ?? this.model.Metadata?.Identifier;
|
|
151
|
+
if (type) {
|
|
152
|
+
doc.__type = type;
|
|
153
|
+
}
|
|
154
|
+
return doc;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Convert a stored document into a model instance
|
|
158
|
+
* @param doc - the MongoDB document
|
|
159
|
+
* @returns the model instance
|
|
160
|
+
*/
|
|
161
|
+
fromDocument(doc) {
|
|
162
|
+
const { _id, __type, ...data } = doc;
|
|
163
|
+
const instance = new this.model(data);
|
|
164
|
+
if (typeof instance.load === "function") {
|
|
165
|
+
instance.load(data);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
Object.assign(instance, data);
|
|
169
|
+
}
|
|
170
|
+
Object.defineProperty(instance, "__type", {
|
|
171
|
+
value: __type ?? this.model.Metadata?.Identifier,
|
|
172
|
+
enumerable: false,
|
|
173
|
+
configurable: true,
|
|
174
|
+
writable: true
|
|
175
|
+
});
|
|
176
|
+
return instance;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Return a filter for Mongo command
|
|
180
|
+
* @param key - the primary key
|
|
181
|
+
* @param conditionField - field to check
|
|
182
|
+
* @param condition - expected value
|
|
183
|
+
* @returns the filter
|
|
184
|
+
*/
|
|
185
|
+
getFilter(key, conditionField, condition) {
|
|
186
|
+
const filter = { _id: key };
|
|
187
|
+
if (conditionField) {
|
|
188
|
+
filter[String(conditionField)] = condition instanceof Date ? condition.toISOString() : condition;
|
|
189
|
+
}
|
|
190
|
+
return filter;
|
|
191
|
+
}
|
|
192
|
+
/** @override */
|
|
193
|
+
async get(primaryKey) {
|
|
194
|
+
const key = this.getPrimaryKey(primaryKey).toString();
|
|
195
|
+
const doc = await (await this.getCollection()).findOne({ _id: key });
|
|
196
|
+
if (doc === null) {
|
|
197
|
+
throw new Error(`Not found: ${key}`);
|
|
198
|
+
}
|
|
199
|
+
return this.fromDocument(doc);
|
|
200
|
+
}
|
|
201
|
+
/** @override */
|
|
202
|
+
async create(data, save = true) {
|
|
203
|
+
// Build the item once so a primary key generated by the model (e.g. UuidModel)
|
|
204
|
+
// is the one stored, even when the input carries an undefined key
|
|
205
|
+
const item = this.buildItem(data);
|
|
206
|
+
const key = this.getPrimaryKey(item).toString();
|
|
207
|
+
if (save !== false) {
|
|
208
|
+
try {
|
|
209
|
+
await (await this.getCollection()).insertOne(this.toDocument(item, key));
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
if (err?.code === 11000) {
|
|
213
|
+
throw new Error(`Already exists: ${key}`);
|
|
214
|
+
}
|
|
215
|
+
throw err;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return item;
|
|
219
|
+
}
|
|
220
|
+
/** @override */
|
|
221
|
+
async update(data, conditionField, condition) {
|
|
222
|
+
const key = this.getPrimaryKey(data).toString();
|
|
223
|
+
const res = await (await this.getCollection()).replaceOne(this.getFilter(key, conditionField, condition), this.toDocument(data, key));
|
|
224
|
+
if (res.matchedCount === 0) {
|
|
225
|
+
throw new UpdateConditionFailError(key, conditionField, condition);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/** @override */
|
|
229
|
+
async patch(primaryKey, data, conditionField, condition) {
|
|
230
|
+
const key = this.getPrimaryKey(primaryKey).toString();
|
|
231
|
+
const $set = JSON.parse(JSON.stringify(data));
|
|
232
|
+
delete $set._id;
|
|
233
|
+
delete $set.__type;
|
|
234
|
+
const res = await (await this.getCollection()).updateOne(this.getFilter(key, conditionField, condition), { $set });
|
|
235
|
+
if (res.matchedCount === 0) {
|
|
236
|
+
throw new UpdateConditionFailError(key, conditionField, condition);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/** @override */
|
|
240
|
+
async delete(primaryKey, conditionField, condition) {
|
|
241
|
+
const key = this.getPrimaryKey(primaryKey).toString();
|
|
242
|
+
const res = await (await this.getCollection()).deleteOne(this.getFilter(key, conditionField, condition));
|
|
243
|
+
if (conditionField && res.deletedCount === 0) {
|
|
244
|
+
throw new UpdateConditionFailError(key, conditionField, condition);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/** @override */
|
|
248
|
+
async exists(primaryKey) {
|
|
249
|
+
const key = this.getPrimaryKey(primaryKey).toString();
|
|
250
|
+
return (await (await this.getCollection()).countDocuments({ _id: key }, { limit: 1 })) === 1;
|
|
251
|
+
}
|
|
252
|
+
/** @override */
|
|
253
|
+
async removeAttribute(primaryKey, attribute, conditionField, condition) {
|
|
254
|
+
const key = this.getPrimaryKey(primaryKey).toString();
|
|
255
|
+
const res = await (await this.getCollection()).updateOne(this.getFilter(key, conditionField, condition), {
|
|
256
|
+
$unset: { [String(attribute)]: 1 },
|
|
257
|
+
$set: { _lastUpdate: new Date().toISOString() }
|
|
258
|
+
});
|
|
259
|
+
if (res.matchedCount === 0) {
|
|
260
|
+
if (conditionField) {
|
|
261
|
+
throw new UpdateConditionFailError(key, conditionField, condition);
|
|
262
|
+
}
|
|
263
|
+
throw new StoreNotFoundError(key, this.getCollectionName());
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/** @override */
|
|
267
|
+
async incrementAttributes(primaryKey, info, conditionField, condition) {
|
|
268
|
+
const key = this.getPrimaryKey(primaryKey).toString();
|
|
269
|
+
const $inc = {};
|
|
270
|
+
if (Array.isArray(info)) {
|
|
271
|
+
for (const e of info) {
|
|
272
|
+
if (typeof e === "string") {
|
|
273
|
+
$inc[e] = 1;
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
$inc[e.property] = e.value ?? 1;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
for (const [property, value] of Object.entries(info)) {
|
|
282
|
+
$inc[property] = value;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
const res = await (await this.getCollection()).updateOne(this.getFilter(key, conditionField, condition), {
|
|
286
|
+
$inc,
|
|
287
|
+
$set: { _lastUpdate: new Date().toISOString() }
|
|
288
|
+
});
|
|
289
|
+
if (res.matchedCount === 0) {
|
|
290
|
+
if (conditionField) {
|
|
291
|
+
throw new UpdateConditionFailError(key, conditionField, condition);
|
|
292
|
+
}
|
|
293
|
+
throw new StoreNotFoundError(key, this.getCollectionName());
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/** @override */
|
|
297
|
+
async upsertItemToCollection(primaryKey, collection, item, index, itemWriteConditionField, itemWriteCondition) {
|
|
298
|
+
const key = this.getPrimaryKey(primaryKey).toString();
|
|
299
|
+
const prop = String(collection);
|
|
300
|
+
const filter = { _id: key };
|
|
301
|
+
const value = JSON.parse(JSON.stringify(item));
|
|
302
|
+
let params;
|
|
303
|
+
if (index === undefined) {
|
|
304
|
+
params = { $push: { [prop]: value }, $set: { _lastUpdate: new Date().toISOString() } };
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
params = { $set: { [`${prop}.${index}`]: value, _lastUpdate: new Date().toISOString() } };
|
|
308
|
+
if (itemWriteCondition !== undefined) {
|
|
309
|
+
filter[`${prop}.${index}.${String(itemWriteConditionField)}`] = itemWriteCondition;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const res = await (await this.getCollection()).updateOne(filter, params);
|
|
313
|
+
if (res.matchedCount === 0) {
|
|
314
|
+
if (itemWriteCondition !== undefined) {
|
|
315
|
+
throw new UpdateConditionFailError(key, String(itemWriteConditionField), itemWriteCondition);
|
|
316
|
+
}
|
|
317
|
+
throw new StoreNotFoundError(key, this.getCollectionName());
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/** @override */
|
|
321
|
+
async deleteItemFromCollection(primaryKey, collection, index, itemWriteConditionField, itemWriteCondition) {
|
|
322
|
+
const key = this.getPrimaryKey(primaryKey).toString();
|
|
323
|
+
const prop = String(collection);
|
|
324
|
+
const filter = { _id: key };
|
|
325
|
+
if (itemWriteCondition !== undefined) {
|
|
326
|
+
filter[`${prop}.${index}.${String(itemWriteConditionField)}`] = itemWriteCondition;
|
|
327
|
+
}
|
|
328
|
+
const col = await this.getCollection();
|
|
329
|
+
// MongoDB cannot remove an array element by index: unset it then pull the null
|
|
330
|
+
const res = await col.updateOne(filter, {
|
|
331
|
+
$unset: { [`${prop}.${index}`]: 1 },
|
|
332
|
+
$set: { _lastUpdate: new Date().toISOString() }
|
|
333
|
+
});
|
|
334
|
+
if (res.matchedCount === 0) {
|
|
335
|
+
if (itemWriteCondition !== undefined) {
|
|
336
|
+
throw new UpdateConditionFailError(key, String(itemWriteConditionField), itemWriteCondition);
|
|
337
|
+
}
|
|
338
|
+
throw new StoreNotFoundError(key, this.getCollectionName());
|
|
339
|
+
}
|
|
340
|
+
await col.updateOne({ _id: key }, { $pull: { [prop]: null } });
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Build the MongoDB filter restricting results to this model and its subclasses
|
|
344
|
+
*
|
|
345
|
+
* Documents without `__type` are considered as instance of the repository model
|
|
346
|
+
* @returns the class filter or undefined if the model has no metadata
|
|
347
|
+
*/
|
|
348
|
+
getClassFilter() {
|
|
349
|
+
const ids = this.buildClassFilterIdentifiers();
|
|
350
|
+
if (!ids) {
|
|
351
|
+
return undefined;
|
|
352
|
+
}
|
|
353
|
+
return { $or: [{ __type: { $in: ids } }, { __type: { $exists: false } }] };
|
|
354
|
+
}
|
|
355
|
+
/** @override — translate the WebdaQL query to a MongoDB find */
|
|
356
|
+
async query(query) {
|
|
357
|
+
const parsed = typeof query === "string" ? WebdaQL.parse(query) : query;
|
|
358
|
+
let offset = parseInt(parsed.continuationToken);
|
|
359
|
+
if (isNaN(offset)) {
|
|
360
|
+
offset = 0;
|
|
361
|
+
}
|
|
362
|
+
const sort = {};
|
|
363
|
+
for (const order of parsed.orderBy ?? []) {
|
|
364
|
+
sort[order.field] = order.direction === "ASC" ? 1 : -1;
|
|
365
|
+
}
|
|
366
|
+
const limit = parsed.limit || 1000;
|
|
367
|
+
let filter = mapExpression(parsed.filter);
|
|
368
|
+
const classFilter = this.getClassFilter();
|
|
369
|
+
if (classFilter) {
|
|
370
|
+
filter = Object.keys(filter).length ? { $and: [classFilter, filter] } : classFilter;
|
|
371
|
+
}
|
|
372
|
+
const docs = await (await this.getCollection()).find(filter).sort(sort).skip(offset).limit(limit).toArray();
|
|
373
|
+
const results = docs.map(doc => this.fromDocument(doc));
|
|
374
|
+
return {
|
|
375
|
+
results,
|
|
376
|
+
continuationToken: results.length >= limit ? (offset + limit).toString() : undefined
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Name of the underlying collection, used in errors
|
|
381
|
+
* @returns the collection name
|
|
382
|
+
*/
|
|
383
|
+
getCollectionName() {
|
|
384
|
+
return this.model.Metadata?.Identifier ?? "MongoDB";
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Store Objects in MongoDB
|
|
389
|
+
*
|
|
390
|
+
* Parameters:
|
|
391
|
+
* mongoUrl: 'mongodb://127.0.0.1:27017' // If not found try to read WEBDA_MONGO_URL env variable
|
|
392
|
+
*
|
|
393
|
+
* @WebdaModda
|
|
394
|
+
*/
|
|
395
|
+
let MongoStore = (() => {
|
|
396
|
+
var _a;
|
|
397
|
+
let _classSuper = Store;
|
|
398
|
+
let _instanceExtraInitializers = [];
|
|
399
|
+
let _getRepository_decorators;
|
|
400
|
+
return _a = class MongoStore extends _classSuper {
|
|
401
|
+
constructor() {
|
|
402
|
+
super(...arguments);
|
|
403
|
+
/**
|
|
404
|
+
* Connect promise
|
|
405
|
+
*/
|
|
406
|
+
this._connectPromise = (__runInitializers(this, _instanceExtraInitializers), undefined);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Connect to MongoDB if not already connected
|
|
410
|
+
* @returns the collection
|
|
411
|
+
*/
|
|
412
|
+
async _connect() {
|
|
413
|
+
this._connectPromise ?? (this._connectPromise = (async () => {
|
|
414
|
+
this._client = await new MongoClient(this.parameters.mongoUrl, this.parameters.options).connect();
|
|
415
|
+
this._db = this._client.db(this.parameters.database, this.parameters.databaseOptions);
|
|
416
|
+
this._collection = this._db.collection(this.parameters.collection);
|
|
417
|
+
return this._collection;
|
|
418
|
+
})());
|
|
419
|
+
return this._connectPromise;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* @override
|
|
423
|
+
*/
|
|
424
|
+
async init() {
|
|
425
|
+
await this._connect();
|
|
426
|
+
return super.init();
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* @override
|
|
430
|
+
*/
|
|
431
|
+
async stop() {
|
|
432
|
+
if (this._connectPromise) {
|
|
433
|
+
this._connectPromise = undefined;
|
|
434
|
+
await this._client?.close();
|
|
435
|
+
this._client = undefined;
|
|
436
|
+
this._db = undefined;
|
|
437
|
+
this._collection = undefined;
|
|
438
|
+
}
|
|
439
|
+
await super.stop();
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Build and return a MongoRepository for the given model
|
|
443
|
+
*
|
|
444
|
+
* The collection is resolved lazily so the repository can be registered
|
|
445
|
+
* before the store is connected.
|
|
446
|
+
* @param model - the model class
|
|
447
|
+
* @returns a repository backed by the store collection
|
|
448
|
+
*/
|
|
449
|
+
getRepository(model) {
|
|
450
|
+
const pks = useModelMetadata(model).PrimaryKey;
|
|
451
|
+
const inner = new MongoRepository(model, pks, () => this._connect());
|
|
452
|
+
// Wrap in EventRepository so typed CRUD events fire; consumers reach them
|
|
453
|
+
// via useRepository(model).on(...).
|
|
454
|
+
return new EventRepository(model, pks, inner);
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Remove every document from the collection (used in tests)
|
|
458
|
+
*/
|
|
459
|
+
async __clean() {
|
|
460
|
+
await (await this._connect()).deleteMany({});
|
|
461
|
+
}
|
|
462
|
+
},
|
|
463
|
+
(() => {
|
|
464
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
465
|
+
_getRepository_decorators = [InstanceCache()];
|
|
466
|
+
__esDecorate(_a, null, _getRepository_decorators, { kind: "method", name: "getRepository", static: false, private: false, access: { has: obj => "getRepository" in obj, get: obj => obj.getRepository }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
467
|
+
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
468
|
+
})(),
|
|
469
|
+
_a;
|
|
470
|
+
})();
|
|
471
|
+
export { MongoStore };
|
|
472
|
+
export default MongoStore;
|
|
473
|
+
//# sourceMappingURL=mongodb.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongodb.service.js","sourceRoot":"","sources":["../src/mongodb.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webda/mongo",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.3",
|
|
4
4
|
"description": "Implements Mongo DB on webda",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mongo",
|
|
@@ -10,38 +10,16 @@
|
|
|
10
10
|
"repository": "git://github.com/loopingz/webda.io.git",
|
|
11
11
|
"main": "lib/index.js",
|
|
12
12
|
"typings": "lib/index.d.ts",
|
|
13
|
-
"scripts": {
|
|
14
|
-
"build": "webda build",
|
|
15
|
-
"build:watch": "webda build --watch",
|
|
16
|
-
"pretest": "npm run build",
|
|
17
|
-
"lint": "eslint",
|
|
18
|
-
"lint:fix": "eslint --fix",
|
|
19
|
-
"test": "c8 mocha",
|
|
20
|
-
"format": "prettier --check src/**/*",
|
|
21
|
-
"format:fix": "prettier --write src/**/*"
|
|
22
|
-
},
|
|
23
13
|
"dependencies": {
|
|
24
|
-
"
|
|
25
|
-
"@webda/
|
|
26
|
-
"
|
|
14
|
+
"mongodb": "^7.1.1",
|
|
15
|
+
"@webda/core": "4.0.0-beta.3",
|
|
16
|
+
"@webda/ql": "4.0.0-beta.3"
|
|
27
17
|
},
|
|
28
18
|
"files": [
|
|
29
19
|
"lib",
|
|
30
20
|
"test",
|
|
31
21
|
"webda.module.json"
|
|
32
22
|
],
|
|
33
|
-
"c8": {
|
|
34
|
-
"report-dir": "./reports",
|
|
35
|
-
"reporter": [
|
|
36
|
-
"html",
|
|
37
|
-
"lcov",
|
|
38
|
-
"json",
|
|
39
|
-
"text"
|
|
40
|
-
],
|
|
41
|
-
"exclude": [
|
|
42
|
-
"**/*.spec.ts"
|
|
43
|
-
]
|
|
44
|
-
},
|
|
45
23
|
"homepage": "https://webda.io",
|
|
46
24
|
"publishConfig": {
|
|
47
25
|
"access": "public"
|
|
@@ -50,21 +28,37 @@
|
|
|
50
28
|
"namespace": "Webda"
|
|
51
29
|
},
|
|
52
30
|
"devDependencies": {
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
"
|
|
56
|
-
"
|
|
31
|
+
"@types/node": "25.5.0",
|
|
32
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
33
|
+
"jscodeshift": "^17.3.0",
|
|
34
|
+
"skott": "^0.35.8",
|
|
35
|
+
"tsx": "^4.21.0",
|
|
36
|
+
"typescript": "7.1.0-dev.20260929.1",
|
|
37
|
+
"vite": "^6.0.0",
|
|
38
|
+
"vitest": "^4.1.2",
|
|
39
|
+
"@webda/compiler": "^4.0.0-beta.3",
|
|
40
|
+
"@webda/test": "4.0.0-beta.3"
|
|
57
41
|
},
|
|
58
42
|
"type": "module",
|
|
59
43
|
"engines": {
|
|
60
|
-
"node": ">=
|
|
44
|
+
"node": ">=22.0.0"
|
|
61
45
|
},
|
|
62
46
|
"nx": {
|
|
63
47
|
"implicitDependencies": [
|
|
64
|
-
"@webda/core"
|
|
65
|
-
"@webda/shell"
|
|
48
|
+
"@webda/core"
|
|
66
49
|
]
|
|
67
50
|
},
|
|
68
51
|
"license": "LGPL-3.0-only",
|
|
69
|
-
"
|
|
70
|
-
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "webdac build",
|
|
54
|
+
"build:watch": "webdac build --watch",
|
|
55
|
+
"pretest": "npm run build",
|
|
56
|
+
"lint": "eslint",
|
|
57
|
+
"lint:fix": "eslint --fix",
|
|
58
|
+
"test": "vitest run",
|
|
59
|
+
"format": "prettier --check src/**/*",
|
|
60
|
+
"format:fix": "prettier --write src/**/*",
|
|
61
|
+
"deps:graph": "skott --showCircularDependencies --no-trackTypeOnlyDependencies --displayMode=raw -e .ts",
|
|
62
|
+
"codemod": "jscodeshift --parser=ts --extensions=tsx,ts -t ../codemod/current.mjs src"
|
|
63
|
+
}
|
|
64
|
+
}
|