@opra/mongodb 1.4.4 → 1.5.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/cjs/adapter/mongo-patch-generator.js +14 -12
- package/cjs/adapter/prepare-projection.js +6 -4
- package/cjs/services/mongo-entity-service.js +3 -1
- package/cjs/services/mongo-nested-service.js +1 -1
- package/cjs/services/mongo-service.js +5 -1
- package/esm/adapter/mongo-patch-generator.js +14 -12
- package/esm/adapter/prepare-projection.js +6 -4
- package/esm/services/mongo-entity-service.js +3 -1
- package/esm/services/mongo-nested-service.js +1 -1
- package/esm/services/mongo-service.js +5 -1
- package/package.json +4 -4
- package/types/adapter/mongo-patch-generator.d.ts +4 -3
- package/types/adapter/prepare-projection.d.ts +2 -2
- package/types/services/mongo-service.d.ts +5 -0
|
@@ -6,7 +6,7 @@ const FIELD_NAME_PATTERN = /^([-><*:])?(.+)$/;
|
|
|
6
6
|
class MongoPatchGenerator {
|
|
7
7
|
generatePatch(dataType, doc, options) {
|
|
8
8
|
const ctx = {};
|
|
9
|
-
this._processComplexType(ctx, dataType, options?.currentPath || '', doc);
|
|
9
|
+
this._processComplexType(ctx, dataType, options?.currentPath || '', doc, options?.scope);
|
|
10
10
|
const update = {};
|
|
11
11
|
if (ctx.$pull)
|
|
12
12
|
update.$pull = ctx.$pull;
|
|
@@ -21,12 +21,12 @@ class MongoPatchGenerator {
|
|
|
21
21
|
arrayFilters: ctx.arrayFilters,
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
_processComplexType(ctx, dataType, path, input) {
|
|
24
|
+
_processComplexType(ctx, dataType, path, input, scope) {
|
|
25
25
|
if (input._$push) {
|
|
26
|
-
this._processPush(ctx, dataType, path, input._$push);
|
|
26
|
+
this._processPush(ctx, dataType, path, input._$push, scope);
|
|
27
27
|
}
|
|
28
28
|
if (input._$pull) {
|
|
29
|
-
this._processPull(ctx, dataType, path, input._$pull);
|
|
29
|
+
this._processPull(ctx, dataType, path, input._$pull, scope);
|
|
30
30
|
}
|
|
31
31
|
const keys = Object.keys(input);
|
|
32
32
|
const pathDot = path + (path ? '.' : '');
|
|
@@ -42,8 +42,10 @@ class MongoPatchGenerator {
|
|
|
42
42
|
if (!m)
|
|
43
43
|
continue;
|
|
44
44
|
key = m[2];
|
|
45
|
+
if (key === '_$push' || key === '_$pull')
|
|
46
|
+
continue;
|
|
45
47
|
value = input[key];
|
|
46
|
-
field = dataType.
|
|
48
|
+
field = dataType.getField(key, scope);
|
|
47
49
|
if (!field) {
|
|
48
50
|
if (dataType.additionalFields) {
|
|
49
51
|
if (value === null) {
|
|
@@ -54,7 +56,7 @@ class MongoPatchGenerator {
|
|
|
54
56
|
ctx.$set = ctx.$set || {};
|
|
55
57
|
if (dataType.additionalFields instanceof common_1.ComplexType) {
|
|
56
58
|
/** Process nested object */
|
|
57
|
-
this._processComplexType(ctx, dataType.additionalFields, pathDot + key, value);
|
|
59
|
+
this._processComplexType(ctx, dataType.additionalFields, pathDot + key, value, scope);
|
|
58
60
|
continue;
|
|
59
61
|
}
|
|
60
62
|
ctx.$set[pathDot + key] = value;
|
|
@@ -92,7 +94,7 @@ class MongoPatchGenerator {
|
|
|
92
94
|
[`${arrayFilterName}.${keyField}`]: keyValue,
|
|
93
95
|
});
|
|
94
96
|
/** Process each object in array */
|
|
95
|
-
this._processComplexType(ctx, field.type, pathDot + field.name + `.$[${arrayFilterName}]`, v);
|
|
97
|
+
this._processComplexType(ctx, field.type, pathDot + field.name + `.$[${arrayFilterName}]`, v, scope);
|
|
96
98
|
}
|
|
97
99
|
continue;
|
|
98
100
|
}
|
|
@@ -100,14 +102,14 @@ class MongoPatchGenerator {
|
|
|
100
102
|
if (!(typeof value === 'object'))
|
|
101
103
|
continue;
|
|
102
104
|
/** Process nested object */
|
|
103
|
-
this._processComplexType(ctx, field.type, pathDot + field.name, value);
|
|
105
|
+
this._processComplexType(ctx, field.type, pathDot + field.name, value, scope);
|
|
104
106
|
continue;
|
|
105
107
|
}
|
|
106
108
|
ctx.$set = ctx.$set || {};
|
|
107
109
|
ctx.$set[pathDot + field.name] = value;
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
|
-
_processPush(ctx, dataType, path, input) {
|
|
112
|
+
_processPush(ctx, dataType, path, input, scope) {
|
|
111
113
|
let field;
|
|
112
114
|
let key;
|
|
113
115
|
let value;
|
|
@@ -116,7 +118,7 @@ class MongoPatchGenerator {
|
|
|
116
118
|
let keyField;
|
|
117
119
|
for (key of keys) {
|
|
118
120
|
value = input[key];
|
|
119
|
-
field = dataType.
|
|
121
|
+
field = dataType.getField(key, scope);
|
|
120
122
|
if (!(field && field.isArray))
|
|
121
123
|
continue;
|
|
122
124
|
ctx.$push = ctx.$push || {};
|
|
@@ -145,7 +147,7 @@ class MongoPatchGenerator {
|
|
|
145
147
|
: value;
|
|
146
148
|
}
|
|
147
149
|
}
|
|
148
|
-
_processPull(ctx, dataType, path, input) {
|
|
150
|
+
_processPull(ctx, dataType, path, input, scope) {
|
|
149
151
|
let field;
|
|
150
152
|
let key;
|
|
151
153
|
let value;
|
|
@@ -154,7 +156,7 @@ class MongoPatchGenerator {
|
|
|
154
156
|
let keyField;
|
|
155
157
|
for (key of keys) {
|
|
156
158
|
value = input[key];
|
|
157
|
-
field = dataType.
|
|
159
|
+
field = dataType.getField(key, scope);
|
|
158
160
|
if (!(field && field.isArray))
|
|
159
161
|
continue;
|
|
160
162
|
ctx.$pull = ctx.$pull || {};
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.default = prepareProjection;
|
|
4
4
|
exports.prepare = prepare;
|
|
5
5
|
const common_1 = require("@opra/common");
|
|
6
|
-
function prepareProjection(dataType, projection) {
|
|
6
|
+
function prepareProjection(dataType, projection, scope) {
|
|
7
7
|
if (projection === '*')
|
|
8
8
|
return undefined;
|
|
9
9
|
if (projection &&
|
|
@@ -14,11 +14,10 @@ function prepareProjection(dataType, projection) {
|
|
|
14
14
|
const projection_ = typeof projection === 'string' || Array.isArray(projection)
|
|
15
15
|
? (0, common_1.parseFieldsProjection)(projection)
|
|
16
16
|
: projection;
|
|
17
|
-
|
|
18
|
-
prepare(dataType, out, projection_);
|
|
17
|
+
prepare(dataType, out, projection_, scope);
|
|
19
18
|
return Object.keys(out).length ? out : undefined;
|
|
20
19
|
}
|
|
21
|
-
function prepare(dataType, target, projection) {
|
|
20
|
+
function prepare(dataType, target, projection, scope) {
|
|
22
21
|
const defaultFields = !projection || !Object.values(projection).find(p => !p.sign);
|
|
23
22
|
const projectionKeys = projection && Object.keys(projection);
|
|
24
23
|
const projectionKeysSet = new Set(projectionKeys);
|
|
@@ -30,6 +29,9 @@ function prepare(dataType, target, projection) {
|
|
|
30
29
|
fieldName = field.name;
|
|
31
30
|
k = fieldName.toLowerCase();
|
|
32
31
|
projectionKeysSet.delete(k);
|
|
32
|
+
/** Ignore if field is not in scope */
|
|
33
|
+
if (scope && !field.inScope(scope))
|
|
34
|
+
continue;
|
|
33
35
|
const p = projection?.[k];
|
|
34
36
|
if (
|
|
35
37
|
/** Ignore if field is omitted */
|
|
@@ -406,7 +406,9 @@ class MongoEntityService extends mongo_service_js_1.MongoService {
|
|
|
406
406
|
}
|
|
407
407
|
_generatePatch(command, doc) {
|
|
408
408
|
const patchGenerator = new mongo_patch_generator_js_1.MongoPatchGenerator();
|
|
409
|
-
const { update, arrayFilters } = patchGenerator.generatePatch(this.dataType, doc
|
|
409
|
+
const { update, arrayFilters } = patchGenerator.generatePatch(this.dataType, doc, {
|
|
410
|
+
scope: this._dataTypeScope,
|
|
411
|
+
});
|
|
410
412
|
command.options = command.options || {};
|
|
411
413
|
if (arrayFilters) {
|
|
412
414
|
command.options.arrayFilters = command.options.arrayFilters || [];
|
|
@@ -35,7 +35,7 @@ class MongoNestedService extends mongo_service_js_1.MongoService {
|
|
|
35
35
|
* @throws {NotAcceptableError} If the data type is not a ComplexType.
|
|
36
36
|
*/
|
|
37
37
|
get dataType() {
|
|
38
|
-
const t = super.dataType.getField(this.fieldName).type;
|
|
38
|
+
const t = super.dataType.getField(this.fieldName, this.scope).type;
|
|
39
39
|
if (!(t instanceof common_1.ComplexType))
|
|
40
40
|
throw new common_1.NotAcceptableError(`Data type "${t.name}" is not a ComplexType`);
|
|
41
41
|
return t;
|
|
@@ -91,8 +91,11 @@ class MongoService extends core_1.ServiceBase {
|
|
|
91
91
|
* @throws {NotAcceptableError} If the data type is not a ComplexType.
|
|
92
92
|
*/
|
|
93
93
|
get dataType() {
|
|
94
|
+
if (this._dataType && this._dataTypeScope !== this.scope)
|
|
95
|
+
this._dataType = undefined;
|
|
94
96
|
if (!this._dataType)
|
|
95
97
|
this._dataType = this.context.documentNode.getComplexType(this._dataType_);
|
|
98
|
+
this._dataTypeScope = this.scope;
|
|
96
99
|
return this._dataType;
|
|
97
100
|
}
|
|
98
101
|
/**
|
|
@@ -243,6 +246,7 @@ class MongoService extends core_1.ServiceBase {
|
|
|
243
246
|
if (validator)
|
|
244
247
|
return validator;
|
|
245
248
|
const options = { projection: '*' };
|
|
249
|
+
options.scope = this._dataTypeScope;
|
|
246
250
|
if (operation === 'update') {
|
|
247
251
|
options.partial = 'deep';
|
|
248
252
|
options.allowPatchOperators = true;
|
|
@@ -262,7 +266,7 @@ class MongoService extends core_1.ServiceBase {
|
|
|
262
266
|
const options = {
|
|
263
267
|
projection: '*',
|
|
264
268
|
partial: 'deep',
|
|
265
|
-
|
|
269
|
+
scope: this._dataTypeScope,
|
|
266
270
|
};
|
|
267
271
|
const dataType = this.dataType;
|
|
268
272
|
validator = dataType.generateCodec('decode', options);
|
|
@@ -3,7 +3,7 @@ const FIELD_NAME_PATTERN = /^([-><*:])?(.+)$/;
|
|
|
3
3
|
export class MongoPatchGenerator {
|
|
4
4
|
generatePatch(dataType, doc, options) {
|
|
5
5
|
const ctx = {};
|
|
6
|
-
this._processComplexType(ctx, dataType, options?.currentPath || '', doc);
|
|
6
|
+
this._processComplexType(ctx, dataType, options?.currentPath || '', doc, options?.scope);
|
|
7
7
|
const update = {};
|
|
8
8
|
if (ctx.$pull)
|
|
9
9
|
update.$pull = ctx.$pull;
|
|
@@ -18,12 +18,12 @@ export class MongoPatchGenerator {
|
|
|
18
18
|
arrayFilters: ctx.arrayFilters,
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
_processComplexType(ctx, dataType, path, input) {
|
|
21
|
+
_processComplexType(ctx, dataType, path, input, scope) {
|
|
22
22
|
if (input._$push) {
|
|
23
|
-
this._processPush(ctx, dataType, path, input._$push);
|
|
23
|
+
this._processPush(ctx, dataType, path, input._$push, scope);
|
|
24
24
|
}
|
|
25
25
|
if (input._$pull) {
|
|
26
|
-
this._processPull(ctx, dataType, path, input._$pull);
|
|
26
|
+
this._processPull(ctx, dataType, path, input._$pull, scope);
|
|
27
27
|
}
|
|
28
28
|
const keys = Object.keys(input);
|
|
29
29
|
const pathDot = path + (path ? '.' : '');
|
|
@@ -39,8 +39,10 @@ export class MongoPatchGenerator {
|
|
|
39
39
|
if (!m)
|
|
40
40
|
continue;
|
|
41
41
|
key = m[2];
|
|
42
|
+
if (key === '_$push' || key === '_$pull')
|
|
43
|
+
continue;
|
|
42
44
|
value = input[key];
|
|
43
|
-
field = dataType.
|
|
45
|
+
field = dataType.getField(key, scope);
|
|
44
46
|
if (!field) {
|
|
45
47
|
if (dataType.additionalFields) {
|
|
46
48
|
if (value === null) {
|
|
@@ -51,7 +53,7 @@ export class MongoPatchGenerator {
|
|
|
51
53
|
ctx.$set = ctx.$set || {};
|
|
52
54
|
if (dataType.additionalFields instanceof ComplexType) {
|
|
53
55
|
/** Process nested object */
|
|
54
|
-
this._processComplexType(ctx, dataType.additionalFields, pathDot + key, value);
|
|
56
|
+
this._processComplexType(ctx, dataType.additionalFields, pathDot + key, value, scope);
|
|
55
57
|
continue;
|
|
56
58
|
}
|
|
57
59
|
ctx.$set[pathDot + key] = value;
|
|
@@ -89,7 +91,7 @@ export class MongoPatchGenerator {
|
|
|
89
91
|
[`${arrayFilterName}.${keyField}`]: keyValue,
|
|
90
92
|
});
|
|
91
93
|
/** Process each object in array */
|
|
92
|
-
this._processComplexType(ctx, field.type, pathDot + field.name + `.$[${arrayFilterName}]`, v);
|
|
94
|
+
this._processComplexType(ctx, field.type, pathDot + field.name + `.$[${arrayFilterName}]`, v, scope);
|
|
93
95
|
}
|
|
94
96
|
continue;
|
|
95
97
|
}
|
|
@@ -97,14 +99,14 @@ export class MongoPatchGenerator {
|
|
|
97
99
|
if (!(typeof value === 'object'))
|
|
98
100
|
continue;
|
|
99
101
|
/** Process nested object */
|
|
100
|
-
this._processComplexType(ctx, field.type, pathDot + field.name, value);
|
|
102
|
+
this._processComplexType(ctx, field.type, pathDot + field.name, value, scope);
|
|
101
103
|
continue;
|
|
102
104
|
}
|
|
103
105
|
ctx.$set = ctx.$set || {};
|
|
104
106
|
ctx.$set[pathDot + field.name] = value;
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
|
-
_processPush(ctx, dataType, path, input) {
|
|
109
|
+
_processPush(ctx, dataType, path, input, scope) {
|
|
108
110
|
let field;
|
|
109
111
|
let key;
|
|
110
112
|
let value;
|
|
@@ -113,7 +115,7 @@ export class MongoPatchGenerator {
|
|
|
113
115
|
let keyField;
|
|
114
116
|
for (key of keys) {
|
|
115
117
|
value = input[key];
|
|
116
|
-
field = dataType.
|
|
118
|
+
field = dataType.getField(key, scope);
|
|
117
119
|
if (!(field && field.isArray))
|
|
118
120
|
continue;
|
|
119
121
|
ctx.$push = ctx.$push || {};
|
|
@@ -142,7 +144,7 @@ export class MongoPatchGenerator {
|
|
|
142
144
|
: value;
|
|
143
145
|
}
|
|
144
146
|
}
|
|
145
|
-
_processPull(ctx, dataType, path, input) {
|
|
147
|
+
_processPull(ctx, dataType, path, input, scope) {
|
|
146
148
|
let field;
|
|
147
149
|
let key;
|
|
148
150
|
let value;
|
|
@@ -151,7 +153,7 @@ export class MongoPatchGenerator {
|
|
|
151
153
|
let keyField;
|
|
152
154
|
for (key of keys) {
|
|
153
155
|
value = input[key];
|
|
154
|
-
field = dataType.
|
|
156
|
+
field = dataType.getField(key, scope);
|
|
155
157
|
if (!(field && field.isArray))
|
|
156
158
|
continue;
|
|
157
159
|
ctx.$pull = ctx.$pull || {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComplexType, parseFieldsProjection, } from '@opra/common';
|
|
2
|
-
export default function prepareProjection(dataType, projection) {
|
|
2
|
+
export default function prepareProjection(dataType, projection, scope) {
|
|
3
3
|
if (projection === '*')
|
|
4
4
|
return undefined;
|
|
5
5
|
if (projection &&
|
|
@@ -10,11 +10,10 @@ export default function prepareProjection(dataType, projection) {
|
|
|
10
10
|
const projection_ = typeof projection === 'string' || Array.isArray(projection)
|
|
11
11
|
? parseFieldsProjection(projection)
|
|
12
12
|
: projection;
|
|
13
|
-
|
|
14
|
-
prepare(dataType, out, projection_);
|
|
13
|
+
prepare(dataType, out, projection_, scope);
|
|
15
14
|
return Object.keys(out).length ? out : undefined;
|
|
16
15
|
}
|
|
17
|
-
export function prepare(dataType, target, projection) {
|
|
16
|
+
export function prepare(dataType, target, projection, scope) {
|
|
18
17
|
const defaultFields = !projection || !Object.values(projection).find(p => !p.sign);
|
|
19
18
|
const projectionKeys = projection && Object.keys(projection);
|
|
20
19
|
const projectionKeysSet = new Set(projectionKeys);
|
|
@@ -26,6 +25,9 @@ export function prepare(dataType, target, projection) {
|
|
|
26
25
|
fieldName = field.name;
|
|
27
26
|
k = fieldName.toLowerCase();
|
|
28
27
|
projectionKeysSet.delete(k);
|
|
28
|
+
/** Ignore if field is not in scope */
|
|
29
|
+
if (scope && !field.inScope(scope))
|
|
30
|
+
continue;
|
|
29
31
|
const p = projection?.[k];
|
|
30
32
|
if (
|
|
31
33
|
/** Ignore if field is omitted */
|
|
@@ -403,7 +403,9 @@ export class MongoEntityService extends MongoService {
|
|
|
403
403
|
}
|
|
404
404
|
_generatePatch(command, doc) {
|
|
405
405
|
const patchGenerator = new MongoPatchGenerator();
|
|
406
|
-
const { update, arrayFilters } = patchGenerator.generatePatch(this.dataType, doc
|
|
406
|
+
const { update, arrayFilters } = patchGenerator.generatePatch(this.dataType, doc, {
|
|
407
|
+
scope: this._dataTypeScope,
|
|
408
|
+
});
|
|
407
409
|
command.options = command.options || {};
|
|
408
410
|
if (arrayFilters) {
|
|
409
411
|
command.options.arrayFilters = command.options.arrayFilters || [];
|
|
@@ -32,7 +32,7 @@ export class MongoNestedService extends MongoService {
|
|
|
32
32
|
* @throws {NotAcceptableError} If the data type is not a ComplexType.
|
|
33
33
|
*/
|
|
34
34
|
get dataType() {
|
|
35
|
-
const t = super.dataType.getField(this.fieldName).type;
|
|
35
|
+
const t = super.dataType.getField(this.fieldName, this.scope).type;
|
|
36
36
|
if (!(t instanceof ComplexType))
|
|
37
37
|
throw new NotAcceptableError(`Data type "${t.name}" is not a ComplexType`);
|
|
38
38
|
return t;
|
|
@@ -88,8 +88,11 @@ export class MongoService extends ServiceBase {
|
|
|
88
88
|
* @throws {NotAcceptableError} If the data type is not a ComplexType.
|
|
89
89
|
*/
|
|
90
90
|
get dataType() {
|
|
91
|
+
if (this._dataType && this._dataTypeScope !== this.scope)
|
|
92
|
+
this._dataType = undefined;
|
|
91
93
|
if (!this._dataType)
|
|
92
94
|
this._dataType = this.context.documentNode.getComplexType(this._dataType_);
|
|
95
|
+
this._dataTypeScope = this.scope;
|
|
93
96
|
return this._dataType;
|
|
94
97
|
}
|
|
95
98
|
/**
|
|
@@ -240,6 +243,7 @@ export class MongoService extends ServiceBase {
|
|
|
240
243
|
if (validator)
|
|
241
244
|
return validator;
|
|
242
245
|
const options = { projection: '*' };
|
|
246
|
+
options.scope = this._dataTypeScope;
|
|
243
247
|
if (operation === 'update') {
|
|
244
248
|
options.partial = 'deep';
|
|
245
249
|
options.allowPatchOperators = true;
|
|
@@ -259,7 +263,7 @@ export class MongoService extends ServiceBase {
|
|
|
259
263
|
const options = {
|
|
260
264
|
projection: '*',
|
|
261
265
|
partial: 'deep',
|
|
262
|
-
|
|
266
|
+
scope: this._dataTypeScope,
|
|
263
267
|
};
|
|
264
268
|
const dataType = this.dataType;
|
|
265
269
|
validator = dataType.generateCodec('decode', options);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opra/mongodb",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "Opra MongoDB adapter package",
|
|
5
5
|
"author": "Panates",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"valgen": "^5.12.0"
|
|
11
11
|
},
|
|
12
12
|
"peerDependencies": {
|
|
13
|
-
"@opra/common": "^1.
|
|
14
|
-
"@opra/core": "^1.
|
|
15
|
-
"@opra/http": "^1.
|
|
13
|
+
"@opra/common": "^1.5.1",
|
|
14
|
+
"@opra/core": "^1.5.1",
|
|
15
|
+
"@opra/http": "^1.5.1",
|
|
16
16
|
"mongodb": ">= 6.0.0"
|
|
17
17
|
},
|
|
18
18
|
"type": "module",
|
|
@@ -13,13 +13,14 @@ export declare class MongoPatchGenerator {
|
|
|
13
13
|
update: UpdateFilter<T>;
|
|
14
14
|
arrayFilters?: Record<string, any>[];
|
|
15
15
|
};
|
|
16
|
-
protected _processComplexType(ctx: Context, dataType: ComplexType, path: string, input: any): void;
|
|
17
|
-
protected _processPush(ctx: Context, dataType: ComplexType, path: string, input: any): void;
|
|
18
|
-
protected _processPull(ctx: Context, dataType: ComplexType, path: string, input: any): void;
|
|
16
|
+
protected _processComplexType(ctx: Context, dataType: ComplexType, path: string, input: any, scope?: string): void;
|
|
17
|
+
protected _processPush(ctx: Context, dataType: ComplexType, path: string, input: any, scope?: string): void;
|
|
18
|
+
protected _processPull(ctx: Context, dataType: ComplexType, path: string, input: any, scope?: string): void;
|
|
19
19
|
}
|
|
20
20
|
export declare namespace MongoPatchGenerator {
|
|
21
21
|
interface Options {
|
|
22
22
|
currentPath?: string;
|
|
23
|
+
scope?: string;
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ComplexType, FieldsProjection } from '@opra/common';
|
|
2
2
|
import mongodb, { type Document } from 'mongodb';
|
|
3
|
-
export default function prepareProjection(dataType: ComplexType, projection?: string | string[] | Document | '*'): mongodb.Document | undefined;
|
|
4
|
-
export declare function prepare(dataType: ComplexType, target: mongodb.Document, projection?: FieldsProjection): void;
|
|
3
|
+
export default function prepareProjection(dataType: ComplexType, projection?: string | string[] | Document | '*', scope?: string): mongodb.Document | undefined;
|
|
4
|
+
export declare function prepare(dataType: ComplexType, target: mongodb.Document, projection?: FieldsProjection, scope?: string): void;
|
|
@@ -152,10 +152,15 @@ export interface MongoService {
|
|
|
152
152
|
* @template T - The type of the documents in the collection.
|
|
153
153
|
*/
|
|
154
154
|
export declare class MongoService<T extends mongodb.Document = mongodb.Document> extends ServiceBase {
|
|
155
|
+
protected _dataTypeScope?: string;
|
|
155
156
|
protected _dataType_: Type | string;
|
|
156
157
|
protected _dataType?: ComplexType;
|
|
157
158
|
protected _inputCodecs: Record<string, IsObject.Validator<T>>;
|
|
158
159
|
protected _outputCodecs: Record<string, IsObject.Validator<T>>;
|
|
160
|
+
/**
|
|
161
|
+
* Defines comma delimited scopes for api document
|
|
162
|
+
*/
|
|
163
|
+
scope?: string;
|
|
159
164
|
/**
|
|
160
165
|
* Represents the name of a collection in MongoDB
|
|
161
166
|
*/
|