@forestadmin/datasource-mongoose 1.1.0 → 1.1.1
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/collection.js +33 -15
- package/dist/utils/helpers.d.ts +11 -0
- package/dist/utils/helpers.js +26 -3
- package/package.json +1 -1
package/dist/collection.js
CHANGED
|
@@ -67,25 +67,41 @@ class MongooseCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
67
67
|
return (0, helpers_1.replaceMongoTypes)(records);
|
|
68
68
|
}
|
|
69
69
|
async update(caller, filter, patch) {
|
|
70
|
+
// Fetch the ids of the documents OR subdocuments that will be updated.
|
|
71
|
+
// We need to do that regardless of `this.prefix` because the filter may contain conditions on
|
|
72
|
+
// relationships.
|
|
70
73
|
const records = await this.list(caller, filter, new datasource_toolkit_1.Projection('_id'));
|
|
71
74
|
const ids = records.map(record => record._id);
|
|
72
75
|
if (!this.prefix) {
|
|
76
|
+
// We are updating a real document, we can delegate the work to mongoose directly.
|
|
73
77
|
await this.model.updateMany({ _id: ids }, patch, { rawResult: true });
|
|
74
|
-
return;
|
|
75
78
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
else {
|
|
80
|
+
// We are updating a subdocument (this.prefix is set).
|
|
81
|
+
// This method can be called from customer code, so we need to handle the case where we are
|
|
82
|
+
// updating many documents at once (the GUI only allows to update documents one by one).
|
|
83
|
+
// This is trivial when using the flattener on simple objects, but becomes more convoluted
|
|
84
|
+
// when using arrays: we need to update the right element of the array in each document.
|
|
85
|
+
// For performance reasons we group the ids by path (which contain the indexes of the
|
|
86
|
+
// potentially nested arrays) instead of performing one update per doc.
|
|
87
|
+
// Also note, that when we are using a single field as a model, an extra level of nesting is
|
|
88
|
+
// added (this is common when using the flattener to create many to many relationships)
|
|
89
|
+
const { isLeaf } = schema_1.default.fromModel(this.model).getSubSchema(this.prefix);
|
|
90
|
+
// `idsByPath` contains one entry if using the flattener in object-mode, but potentially many
|
|
91
|
+
// if using the flattener in array-mode.
|
|
92
|
+
const idsByPath = (0, helpers_1.groupIdsByPath)(ids);
|
|
93
|
+
// Perform the updates.
|
|
94
|
+
const promises = Object.entries(idsByPath).map(async ([path, rootIds]) => {
|
|
95
|
+
// When using object-mode flattener, path == this.prefix.
|
|
96
|
+
// When using array-mode flattener, path == this.prefix + '.0' (or '.1', etc).
|
|
97
|
+
// (Both can be used at the same time as this is a recursive process).
|
|
98
|
+
const subdocPatch = (0, helpers_1.buildSubdocumentPatch)(path, patch, isLeaf);
|
|
99
|
+
if (Object.keys(subdocPatch).length) {
|
|
100
|
+
await this.model.updateMany({ _id: rootIds }, subdocPatch, { rawResult: true });
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
await Promise.all(promises);
|
|
104
|
+
}
|
|
89
105
|
}
|
|
90
106
|
async delete(caller, filter) {
|
|
91
107
|
const records = await this.list(caller, filter, new datasource_toolkit_1.Projection('_id'));
|
|
@@ -97,6 +113,8 @@ class MongooseCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
97
113
|
const schema = schema_1.default.fromModel(this.model).getSubSchema(this.prefix);
|
|
98
114
|
const idsByPath = (0, helpers_1.groupIdsByPath)(ids);
|
|
99
115
|
if (schema.isArray) {
|
|
116
|
+
// Iterate paths in reverse order so that when we delete elements from arrays, the indexes
|
|
117
|
+
// of the next elements that we'll touch don't change.
|
|
100
118
|
for (const path of Object.keys(idsByPath).sort(helpers_1.compareIds).reverse()) {
|
|
101
119
|
const arrayPath = path.substring(0, path.lastIndexOf('.'));
|
|
102
120
|
const index = Number(path.substring(path.lastIndexOf('.') + 1));
|
|
@@ -138,4 +156,4 @@ class MongooseCollection extends datasource_toolkit_1.BaseCollection {
|
|
|
138
156
|
}
|
|
139
157
|
}
|
|
140
158
|
exports.default = MongooseCollection;
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseURBQXlEO0FBQ3pELHlDQUF5QztBQUN6Qyx3RUFXeUM7QUFHekMsNkNBT3lCO0FBQ3pCLG1FQUFvRDtBQUNwRCxxRUFBc0Q7QUFDdEQsbUVBQW9EO0FBQ3BELHFFQUFzRDtBQUN0RCwrREFBK0M7QUFDL0MsNkVBQThEO0FBQzlELHlFQUEwRDtBQUMxRCxxRkFBcUU7QUFFckUsTUFBcUIsa0JBQW1CLFNBQVEsbUNBQWM7SUFLNUQsWUFDRSxVQUFzQixFQUN0QixLQUF3QixFQUN4QixTQUFpQixJQUFJLEVBQ3JCLGdCQUEwQixFQUFFO1FBRTVCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsSUFBa0I7UUFDN0Msd0VBQXdFO1FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFD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
|
package/dist/utils/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RecordData } from '@forestadmin/datasource-toolkit';
|
|
1
2
|
/**
|
|
2
3
|
* Replace dots by underscores.
|
|
3
4
|
*
|
|
@@ -48,4 +49,14 @@ export declare function groupIdsByPath(ids: string[]): {
|
|
|
48
49
|
* == { _id: '12312321313', createdAt: '2010-01-01T00:00:00Z' }
|
|
49
50
|
*/
|
|
50
51
|
export declare function replaceMongoTypes(records: any): any;
|
|
52
|
+
/**
|
|
53
|
+
* Takes a patch that was built to be applied on a subdocument, and returns a patch that can be
|
|
54
|
+
* applied on the parent document.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* nestPatch('authors.1', { _id: '123', name: 'Asimov'}, false)
|
|
58
|
+
* == nestPatch('authors.1.name', { _id: '123', content: 'Asimov'}, true)
|
|
59
|
+
* == { 'authors.1.name': 'Asimov' }
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildSubdocumentPatch(path: string, patch: RecordData, isLeaf: boolean): RecordData;
|
|
51
62
|
//# sourceMappingURL=helpers.d.ts.map
|
package/dist/utils/helpers.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.replaceMongoTypes = exports.groupIdsByPath = exports.splitId = exports.compareIds = exports.recursiveSet = exports.escape = void 0;
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
exports.buildSubdocumentPatch = exports.replaceMongoTypes = exports.groupIdsByPath = exports.splitId = exports.compareIds = exports.recursiveSet = exports.escape = void 0;
|
|
5
4
|
const mongoose_1 = require("mongoose");
|
|
6
5
|
/**
|
|
7
6
|
* Replace dots by underscores.
|
|
@@ -106,4 +105,28 @@ function replaceMongoTypes(records) {
|
|
|
106
105
|
return JSON.parse(JSON.stringify(records));
|
|
107
106
|
}
|
|
108
107
|
exports.replaceMongoTypes = replaceMongoTypes;
|
|
109
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Takes a patch that was built to be applied on a subdocument, and returns a patch that can be
|
|
110
|
+
* applied on the parent document.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* nestPatch('authors.1', { _id: '123', name: 'Asimov'}, false)
|
|
114
|
+
* == nestPatch('authors.1.name', { _id: '123', content: 'Asimov'}, true)
|
|
115
|
+
* == { 'authors.1.name': 'Asimov' }
|
|
116
|
+
*/
|
|
117
|
+
function buildSubdocumentPatch(path, patch, isLeaf) {
|
|
118
|
+
const cleanPatch = {};
|
|
119
|
+
if (isLeaf) {
|
|
120
|
+
cleanPatch[path] = patch.content;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
for (const [key, value] of Object.entries(patch)) {
|
|
124
|
+
if (key !== '_id' && key !== '_pid') {
|
|
125
|
+
cleanPatch[`${path}.${key}`] = value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return cleanPatch;
|
|
130
|
+
}
|
|
131
|
+
exports.buildSubdocumentPatch = buildSubdocumentPatch;
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHVDQUFrRDtBQUVsRDs7Ozs7R0FLRztBQUNILFNBQWdCLE1BQU0sQ0FBQyxHQUFXO0lBQ2hDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUZELHdCQUVDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLFlBQVksQ0FBQyxNQUFXLEVBQUUsSUFBWSxFQUFFLEtBQWM7SUFDcEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVoQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsTUFBTSxNQUFiLE1BQU0sQ0FBQyxNQUFNLElBQU0sRUFBRSxFQUFDO1FBRXRCLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzdDO1NBQU07UUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0tBQ3RCO0FBQ0gsQ0FBQztBQVpELG9DQVlDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUM3QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDekIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixNQUFNLE1BQU0sR0FBRyxDQUFDLENB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
|