@loopback/repository 4.1.2 → 5.0.2
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/LICENSE +1 -1
- package/dist/connectors/connector.js +1 -1
- package/dist/connectors/connector.js.map +1 -1
- package/dist/connectors/crud.connector.js +1 -1
- package/dist/connectors/crud.connector.js.map +1 -1
- package/dist/connectors/index.js +1 -1
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/kv.connector.js +1 -1
- package/dist/connectors/kv.connector.js.map +1 -1
- package/dist/datasource.js +1 -1
- package/dist/datasource.js.map +1 -1
- package/dist/decorators/index.js +1 -1
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/metadata.js +1 -1
- package/dist/decorators/metadata.js.map +1 -1
- package/dist/decorators/model.decorator.js +1 -1
- package/dist/decorators/model.decorator.js.map +1 -1
- package/dist/decorators/repository.decorator.js +1 -1
- package/dist/decorators/repository.decorator.js.map +1 -1
- package/dist/define-model-class.js +1 -1
- package/dist/define-model-class.js.map +1 -1
- package/dist/define-repository-class.js +1 -1
- package/dist/define-repository-class.js.map +1 -1
- package/dist/errors/entity-not-found.error.js +1 -1
- package/dist/errors/entity-not-found.error.js.map +1 -1
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.js +2 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/errors/invalid-polymorphism.error.d.ts +5 -0
- package/dist/errors/invalid-polymorphism.error.js +22 -0
- package/dist/errors/invalid-polymorphism.error.js.map +1 -0
- package/dist/errors/invalid-relation.error.d.ts +1 -1
- package/dist/errors/invalid-relation.error.js +1 -1
- package/dist/errors/invalid-relation.error.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mixins/index.js +1 -1
- package/dist/mixins/index.js.map +1 -1
- package/dist/mixins/repository.mixin.d.ts +49 -50
- package/dist/mixins/repository.mixin.js +1 -1
- package/dist/mixins/repository.mixin.js.map +1 -1
- package/dist/model.d.ts +7 -1
- package/dist/model.js +15 -1
- package/dist/model.js.map +1 -1
- package/dist/relations/belongs-to/belongs-to.accessor.d.ts +6 -2
- package/dist/relations/belongs-to/belongs-to.accessor.js +19 -6
- package/dist/relations/belongs-to/belongs-to.accessor.js.map +1 -1
- package/dist/relations/belongs-to/belongs-to.decorator.js +1 -1
- package/dist/relations/belongs-to/belongs-to.decorator.js.map +1 -1
- package/dist/relations/belongs-to/belongs-to.helpers.d.ts +3 -0
- package/dist/relations/belongs-to/belongs-to.helpers.js +33 -9
- package/dist/relations/belongs-to/belongs-to.helpers.js.map +1 -1
- package/dist/relations/belongs-to/belongs-to.inclusion-resolver.d.ts +5 -2
- package/dist/relations/belongs-to/belongs-to.inclusion-resolver.js +82 -9
- package/dist/relations/belongs-to/belongs-to.inclusion-resolver.js.map +1 -1
- package/dist/relations/belongs-to/belongs-to.repository.d.ts +28 -5
- package/dist/relations/belongs-to/belongs-to.repository.js +50 -11
- package/dist/relations/belongs-to/belongs-to.repository.js.map +1 -1
- package/dist/relations/belongs-to/index.d.ts +2 -2
- package/dist/relations/belongs-to/index.js +3 -3
- package/dist/relations/belongs-to/index.js.map +1 -1
- package/dist/relations/has-many/has-many-through.helpers.d.ts +3 -0
- package/dist/relations/has-many/has-many-through.helpers.js +26 -2
- package/dist/relations/has-many/has-many-through.helpers.js.map +1 -1
- package/dist/relations/has-many/has-many-through.inclusion-resolver.d.ts +3 -1
- package/dist/relations/has-many/has-many-through.inclusion-resolver.js +93 -22
- package/dist/relations/has-many/has-many-through.inclusion-resolver.js.map +1 -1
- package/dist/relations/has-many/has-many-through.repository-factory.d.ts +3 -1
- package/dist/relations/has-many/has-many-through.repository-factory.js +8 -2
- package/dist/relations/has-many/has-many-through.repository-factory.js.map +1 -1
- package/dist/relations/has-many/has-many-through.repository.d.ts +66 -11
- package/dist/relations/has-many/has-many-through.repository.js +212 -36
- package/dist/relations/has-many/has-many-through.repository.js.map +1 -1
- package/dist/relations/has-many/has-many.decorator.js +1 -1
- package/dist/relations/has-many/has-many.decorator.js.map +1 -1
- package/dist/relations/has-many/has-many.helpers.js +1 -1
- package/dist/relations/has-many/has-many.helpers.js.map +1 -1
- package/dist/relations/has-many/has-many.inclusion-resolver.js +1 -1
- package/dist/relations/has-many/has-many.inclusion-resolver.js.map +1 -1
- package/dist/relations/has-many/has-many.repository-factory.js +1 -1
- package/dist/relations/has-many/has-many.repository-factory.js.map +1 -1
- package/dist/relations/has-many/has-many.repository.js +1 -1
- package/dist/relations/has-many/has-many.repository.js.map +1 -1
- package/dist/relations/has-many/index.d.ts +2 -2
- package/dist/relations/has-many/index.js +3 -3
- package/dist/relations/has-many/index.js.map +1 -1
- package/dist/relations/has-one/has-one.decorator.js +1 -1
- package/dist/relations/has-one/has-one.decorator.js.map +1 -1
- package/dist/relations/has-one/has-one.helpers.d.ts +3 -0
- package/dist/relations/has-one/has-one.helpers.js +35 -9
- package/dist/relations/has-one/has-one.helpers.js.map +1 -1
- package/dist/relations/has-one/has-one.inclusion-resolver.d.ts +6 -3
- package/dist/relations/has-one/has-one.inclusion-resolver.js +83 -8
- package/dist/relations/has-one/has-one.inclusion-resolver.js.map +1 -1
- package/dist/relations/has-one/has-one.repository-factory.d.ts +9 -3
- package/dist/relations/has-one/has-one.repository-factory.js +14 -4
- package/dist/relations/has-one/has-one.repository-factory.js.map +1 -1
- package/dist/relations/has-one/has-one.repository.d.ts +58 -11
- package/dist/relations/has-one/has-one.repository.js +119 -16
- package/dist/relations/has-one/has-one.repository.js.map +1 -1
- package/dist/relations/has-one/index.js +1 -1
- package/dist/relations/has-one/index.js.map +1 -1
- package/dist/relations/index.d.ts +2 -0
- package/dist/relations/index.js +3 -1
- package/dist/relations/index.js.map +1 -1
- package/dist/relations/references-many/index.d.ts +4 -0
- package/dist/relations/references-many/index.js +12 -0
- package/dist/relations/references-many/index.js.map +1 -0
- package/dist/relations/references-many/references-many.accessor.d.ts +17 -0
- package/dist/relations/references-many/references-many.accessor.js +40 -0
- package/dist/relations/references-many/references-many.accessor.js.map +1 -0
- package/dist/relations/references-many/references-many.decorator.d.ts +11 -0
- package/dist/relations/references-many/references-many.decorator.js +73 -0
- package/dist/relations/references-many/references-many.decorator.js.map +1 -0
- package/dist/relations/references-many/references-many.helpers.d.ts +17 -0
- package/dist/relations/references-many/references-many.helpers.js +63 -0
- package/dist/relations/references-many/references-many.helpers.js.map +1 -0
- package/dist/relations/references-many/references-many.inclusion-resolver.d.ts +14 -0
- package/dist/relations/references-many/references-many.inclusion-resolver.js +42 -0
- package/dist/relations/references-many/references-many.inclusion-resolver.js.map +1 -0
- package/dist/relations/references-many/references-many.repository.d.ts +28 -0
- package/dist/relations/references-many/references-many.repository.js +33 -0
- package/dist/relations/references-many/references-many.repository.js.map +1 -0
- package/dist/relations/relation.decorator.d.ts +0 -6
- package/dist/relations/relation.decorator.js +2 -14
- package/dist/relations/relation.decorator.js.map +1 -1
- package/dist/relations/relation.filter.solver.d.ts +2 -0
- package/dist/relations/relation.filter.solver.js +57 -0
- package/dist/relations/relation.filter.solver.js.map +1 -0
- package/dist/relations/relation.helpers.js +18 -3
- package/dist/relations/relation.helpers.js.map +1 -1
- package/dist/relations/relation.types.d.ts +52 -1
- package/dist/relations/relation.types.js +1 -1
- package/dist/relations/relation.types.js.map +1 -1
- package/dist/repositories/constraint-utils.js +1 -1
- package/dist/repositories/constraint-utils.js.map +1 -1
- package/dist/repositories/index.d.ts +2 -2
- package/dist/repositories/index.js +3 -3
- package/dist/repositories/index.js.map +1 -1
- package/dist/repositories/kv.repository.bridge.js +1 -1
- package/dist/repositories/kv.repository.bridge.js.map +1 -1
- package/dist/repositories/kv.repository.d.ts +2 -2
- package/dist/repositories/kv.repository.js +1 -1
- package/dist/repositories/kv.repository.js.map +1 -1
- package/dist/repositories/legacy-juggler-bridge.d.ts +36 -9
- package/dist/repositories/legacy-juggler-bridge.js +38 -16
- package/dist/repositories/legacy-juggler-bridge.js.map +1 -1
- package/dist/repositories/repository.js +1 -1
- package/dist/repositories/repository.js.map +1 -1
- package/dist/type-resolver.js +1 -1
- package/dist/type-resolver.js.map +1 -1
- package/dist/types/any.js +1 -1
- package/dist/types/any.js.map +1 -1
- package/dist/types/array.js +1 -1
- package/dist/types/array.js.map +1 -1
- package/dist/types/boolean.js +1 -1
- package/dist/types/boolean.js.map +1 -1
- package/dist/types/buffer.js +1 -1
- package/dist/types/buffer.js.map +1 -1
- package/dist/types/date.js +1 -1
- package/dist/types/date.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/model.js +1 -1
- package/dist/types/model.js.map +1 -1
- package/dist/types/null.js +1 -1
- package/dist/types/null.js.map +1 -1
- package/dist/types/number.js +1 -1
- package/dist/types/number.js.map +1 -1
- package/dist/types/object.js +1 -1
- package/dist/types/object.js.map +1 -1
- package/dist/types/string.js +1 -1
- package/dist/types/string.js.map +1 -1
- package/dist/types/type.js +1 -1
- package/dist/types/type.js.map +1 -1
- package/dist/types/union.js +1 -1
- package/dist/types/union.js.map +1 -1
- package/package.json +15 -15
- package/src/connectors/connector.ts +1 -1
- package/src/connectors/crud.connector.ts +1 -1
- package/src/connectors/index.ts +1 -1
- package/src/connectors/kv.connector.ts +1 -1
- package/src/datasource.ts +1 -1
- package/src/decorators/index.ts +1 -1
- package/src/decorators/metadata.ts +1 -1
- package/src/decorators/model.decorator.ts +1 -1
- package/src/decorators/repository.decorator.ts +1 -1
- package/src/define-model-class.ts +1 -1
- package/src/define-repository-class.ts +1 -1
- package/src/errors/entity-not-found.error.ts +1 -1
- package/src/errors/index.ts +2 -1
- package/src/errors/invalid-polymorphism.error.ts +28 -0
- package/src/errors/invalid-relation.error.ts +2 -2
- package/src/index.ts +1 -1
- package/src/mixins/index.ts +1 -1
- package/src/mixins/repository.mixin.ts +1 -6
- package/src/model.ts +20 -1
- package/src/relations/belongs-to/belongs-to.accessor.ts +36 -7
- package/src/relations/belongs-to/belongs-to.decorator.ts +2 -2
- package/src/relations/belongs-to/belongs-to.helpers.ts +37 -10
- package/src/relations/belongs-to/belongs-to.inclusion-resolver.ts +109 -18
- package/src/relations/belongs-to/belongs-to.repository.ts +78 -18
- package/src/relations/belongs-to/index.ts +3 -3
- package/src/relations/has-many/has-many-through.helpers.ts +28 -2
- package/src/relations/has-many/has-many-through.inclusion-resolver.ts +118 -27
- package/src/relations/has-many/has-many-through.repository-factory.ts +22 -4
- package/src/relations/has-many/has-many-through.repository.ts +344 -77
- package/src/relations/has-many/has-many.decorator.ts +1 -1
- package/src/relations/has-many/has-many.helpers.ts +1 -1
- package/src/relations/has-many/has-many.inclusion-resolver.ts +1 -1
- package/src/relations/has-many/has-many.repository-factory.ts +1 -1
- package/src/relations/has-many/has-many.repository.ts +1 -1
- package/src/relations/has-many/index.ts +3 -3
- package/src/relations/has-one/has-one.decorator.ts +1 -1
- package/src/relations/has-one/has-one.helpers.ts +41 -14
- package/src/relations/has-one/has-one.inclusion-resolver.ts +110 -16
- package/src/relations/has-one/has-one.repository-factory.ts +35 -7
- package/src/relations/has-one/has-one.repository.ts +189 -36
- package/src/relations/has-one/index.ts +1 -1
- package/src/relations/index.ts +3 -1
- package/src/relations/references-many/index.ts +9 -0
- package/src/relations/references-many/references-many.accessor.ts +76 -0
- package/src/relations/references-many/references-many.decorator.ts +100 -0
- package/src/relations/references-many/references-many.helpers.ts +82 -0
- package/src/relations/references-many/references-many.inclusion-resolver.ts +80 -0
- package/src/relations/references-many/references-many.repository.ts +55 -0
- package/src/relations/relation.decorator.ts +1 -13
- package/src/relations/relation.filter.solver.ts +56 -0
- package/src/relations/relation.helpers.ts +18 -3
- package/src/relations/relation.types.ts +52 -1
- package/src/repositories/constraint-utils.ts +1 -1
- package/src/repositories/index.ts +3 -3
- package/src/repositories/kv.repository.bridge.ts +1 -1
- package/src/repositories/kv.repository.ts +3 -3
- package/src/repositories/legacy-juggler-bridge.ts +80 -16
- package/src/repositories/repository.ts +1 -1
- package/src/type-resolver.ts +1 -1
- package/src/types/any.ts +1 -1
- package/src/types/array.ts +1 -1
- package/src/types/boolean.ts +1 -1
- package/src/types/buffer.ts +1 -1
- package/src/types/date.ts +1 -1
- package/src/types/index.ts +1 -1
- package/src/types/model.ts +1 -1
- package/src/types/null.ts +1 -1
- package/src/types/number.ts +1 -1
- package/src/types/object.ts +1 -1
- package/src/types/string.ts +1 -1
- package/src/types/type.ts +1 -1
- package/src/types/union.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-many-through.helpers.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-through.helpers.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"has-many-through.helpers.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-through.helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,4 +13,6 @@ import { Getter, HasManyDefinition, InclusionResolver } from '../relation.types'
|
|
|
13
13
|
* @param getTargetRepo - target repository getter i.e where target instances
|
|
14
14
|
* are
|
|
15
15
|
*/
|
|
16
|
-
export declare function createHasManyThroughInclusionResolver<Through extends Entity, ThroughID, ThroughRelations extends object, Target extends Entity, TargetID, TargetRelations extends object>(meta: HasManyDefinition, getThroughRepo: Getter<EntityCrudRepository<Through, ThroughID, ThroughRelations>>,
|
|
16
|
+
export declare function createHasManyThroughInclusionResolver<Through extends Entity, ThroughID, ThroughRelations extends object, Target extends Entity, TargetID, TargetRelations extends object>(meta: HasManyDefinition, getThroughRepo: Getter<EntityCrudRepository<Through, ThroughID, ThroughRelations>>, getTargetRepoDict: {
|
|
17
|
+
[repoType: string]: Getter<EntityCrudRepository<Target, TargetID, TargetRelations>>;
|
|
18
|
+
}): InclusionResolver<Entity, Target>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2020. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
|
|
3
3
|
// Node module: @loopback/repository
|
|
4
4
|
// This file is licensed under the MIT License.
|
|
5
5
|
// License text available at https://opensource.org/licenses/MIT
|
|
@@ -7,8 +7,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.createHasManyThroughInclusionResolver = void 0;
|
|
8
8
|
const tslib_1 = require("tslib");
|
|
9
9
|
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
10
|
+
const __1 = require("../..");
|
|
10
11
|
const relation_helpers_1 = require("../relation.helpers");
|
|
11
|
-
const
|
|
12
|
+
const has_many_through_helpers_1 = require("./has-many-through.helpers");
|
|
12
13
|
const debug = (0, debug_1.default)('loopback:repository:relations:has-many-through:inclusion-resolver');
|
|
13
14
|
/**
|
|
14
15
|
* Creates InclusionResolver for HasManyThrough relation.
|
|
@@ -22,9 +23,12 @@ const debug = (0, debug_1.default)('loopback:repository:relations:has-many-throu
|
|
|
22
23
|
* @param getTargetRepo - target repository getter i.e where target instances
|
|
23
24
|
* are
|
|
24
25
|
*/
|
|
25
|
-
function createHasManyThroughInclusionResolver(meta, getThroughRepo,
|
|
26
|
-
const relationMeta = (0,
|
|
26
|
+
function createHasManyThroughInclusionResolver(meta, getThroughRepo, getTargetRepoDict) {
|
|
27
|
+
const relationMeta = (0, has_many_through_helpers_1.resolveHasManyThroughMetadata)(meta);
|
|
27
28
|
return async function fetchHasManyThroughModels(entities, inclusion, options) {
|
|
29
|
+
if (!relationMeta.through) {
|
|
30
|
+
throw new Error(`relationMeta.through must be defined on ${relationMeta}`);
|
|
31
|
+
}
|
|
28
32
|
if (!entities.length)
|
|
29
33
|
return [];
|
|
30
34
|
debug('Fetching target models for entities:', entities);
|
|
@@ -46,32 +50,99 @@ function createHasManyThroughInclusionResolver(meta, getThroughRepo, getTargetRe
|
|
|
46
50
|
});
|
|
47
51
|
debug('sourceId types', sourceIds.map(i => typeof i));
|
|
48
52
|
const throughRepo = await getThroughRepo();
|
|
49
|
-
const targetRepo = await getTargetRepo();
|
|
50
53
|
// find through models
|
|
51
54
|
const throughFound = await (0, relation_helpers_1.findByForeignKeys)(throughRepo, throughKeyFrom, sourceIds, {}, // scope will be applied at the target level
|
|
52
55
|
options);
|
|
53
56
|
const throughResult = (0, relation_helpers_1.flattenTargetsOfOneToManyRelation)(sourceIds, throughFound, throughKeyFrom);
|
|
54
|
-
const result = [];
|
|
55
57
|
const scope = typeof inclusion === 'string' ? {} : inclusion.scope;
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
// whether the polymorphism is configured
|
|
59
|
+
const targetDiscriminator = relationMeta.through.polymorphic
|
|
60
|
+
? relationMeta.through.polymorphic.discriminator
|
|
61
|
+
: undefined;
|
|
62
|
+
if (targetDiscriminator) {
|
|
63
|
+
// put through results into arrays based on the target polymorphic types
|
|
64
|
+
const throughArrayByTargetType = {};
|
|
65
|
+
for (const throughArray of throughResult) {
|
|
66
|
+
if (throughArray) {
|
|
67
|
+
for (const throughItem of throughArray) {
|
|
68
|
+
const targetType = String(throughItem[targetDiscriminator]);
|
|
69
|
+
if (!getTargetRepoDict[targetType]) {
|
|
70
|
+
throw new __1.InvalidPolymorphismError(targetType, String(targetDiscriminator));
|
|
71
|
+
}
|
|
72
|
+
if (!throughArrayByTargetType[targetType]) {
|
|
73
|
+
throughArrayByTargetType[targetType] = [];
|
|
74
|
+
}
|
|
75
|
+
throughArrayByTargetType[targetType].push(throughItem);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
67
78
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
79
|
+
// get targets based on their polymorphic types
|
|
80
|
+
const targetOfTypes = {};
|
|
81
|
+
for (const targetType of Object.keys(throughArrayByTargetType)) {
|
|
82
|
+
const targetIds = throughArrayByTargetType[targetType].map(throughItem => throughItem[throughKeyTo]);
|
|
83
|
+
const targetRepo = await getTargetRepoDict[targetType]();
|
|
84
|
+
const targetEntityList = await (0, relation_helpers_1.findByForeignKeys)(targetRepo, targetKey, targetIds, scope, options);
|
|
85
|
+
targetOfTypes[targetType] = targetEntityList;
|
|
86
|
+
}
|
|
87
|
+
// put targets into arrays reflecting their throughs
|
|
88
|
+
// Why the order is correct:
|
|
89
|
+
// e.g. through model = T(target instance), target model 1 = a, target model 2 = b
|
|
90
|
+
// all entities: [S1, S2, S2]
|
|
91
|
+
// through-result: [[T(b-11), T(a-12), T(b-13), T(b-14)], [T(a-21), T(a-22), T(b-23)], [T(b-31), T(b-32), T(a-33)]]
|
|
92
|
+
// through-array-by-target-type: {a:[T(a-12), T(a-21), T(a-22), T(a-33)] b: [T(b-11), T(b-13), T(b-14), T(b-23), T(b-31), T(b-32)]}
|
|
93
|
+
// target-array-by-target-type: {a:[a-12, a-21, a-22, a-33] b: [b-11, b-13, b-14, b-23, b-31, b-32]}
|
|
94
|
+
// merged:
|
|
95
|
+
// through-result[0][0]->b => targets: [[b-11 from b.shift()]]
|
|
96
|
+
// through-result[0][1]->a => targets: [[b-11, a-12 from a.shift()]]
|
|
97
|
+
// through-result[0][2]->b => targets: [[b-11, a-12, b-13 from b.shift()]]
|
|
98
|
+
// through-result[0][3]->b => targets: [[b-11, a-12, b-13, b-14 from b.shift()]]
|
|
99
|
+
// through-result[1][0]->a => targets: [[b-11, a-12, b-13, b-14], [a-21, from a.shift()]]
|
|
100
|
+
// through-result[1][1]->a => targets: [[b-11, a-12, b-13, b-14], [a-21, a-22 from a.shift()]]
|
|
101
|
+
// through-result[1][2]->b => targets: [[b-11, a-12, b-13, b-14], [a-21, a-22, b-23 from b.shift()]]
|
|
102
|
+
// through-result[2][0]->b => targets: [[b-11, a-12, b-13, b-14], [a-21, a-22, b-23], [b-31, from b.shift()]]
|
|
103
|
+
// through-result[2][1]->b => targets: [[b-11, a-12, b-13, b-14], [a-21, a-22, b-23], [b-31, b-32 from b.shift()]]
|
|
104
|
+
// through-result[2][1]->b => targets: [[b-11, a-12, b-13, b-14], [a-21, a-22, b-23], [b-31, b-32, a-33 from a.shift()]]
|
|
105
|
+
const allTargetsOfThrough = [];
|
|
106
|
+
for (const throughArray of throughResult) {
|
|
107
|
+
if (throughArray && throughArray.length > 0) {
|
|
108
|
+
const currentTargetThroughArray = [];
|
|
109
|
+
for (const throughItem of throughArray) {
|
|
110
|
+
const itemToAdd = targetOfTypes[String(throughItem[targetDiscriminator])].shift();
|
|
111
|
+
if (itemToAdd) {
|
|
112
|
+
currentTargetThroughArray.push(itemToAdd);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
allTargetsOfThrough.push(currentTargetThroughArray);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
allTargetsOfThrough.push(undefined);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return allTargetsOfThrough;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
const targetRepo = await getTargetRepoDict[relationMeta.target().name]();
|
|
125
|
+
const result = [];
|
|
126
|
+
// convert from through entities to the target entities
|
|
127
|
+
for (const entityList of throughResult) {
|
|
128
|
+
if (entityList) {
|
|
129
|
+
// get target ids from the through entities by foreign key
|
|
130
|
+
const targetIds = entityList.map(entity => entity[throughKeyTo]);
|
|
131
|
+
// the explicit types and casts are needed
|
|
132
|
+
const targetEntityList = await (0, relation_helpers_1.findByForeignKeys)(targetRepo, targetKey, targetIds, scope, {
|
|
133
|
+
...options,
|
|
134
|
+
isThroughModelInclude: true,
|
|
135
|
+
});
|
|
136
|
+
result.push(targetEntityList);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// no entities found, add undefined to results
|
|
140
|
+
result.push(entityList);
|
|
141
|
+
}
|
|
71
142
|
}
|
|
143
|
+
debug('fetchHasManyThroughModels result', result);
|
|
144
|
+
return result;
|
|
72
145
|
}
|
|
73
|
-
debug('fetchHasManyThroughModels result', result);
|
|
74
|
-
return result;
|
|
75
146
|
};
|
|
76
147
|
}
|
|
77
148
|
exports.createHasManyThroughInclusionResolver = createHasManyThroughInclusionResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-many-through.inclusion-resolver.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-through.inclusion-resolver.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"has-many-through.inclusion-resolver.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-through.inclusion-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,4 +14,6 @@ export declare type HasManyThroughRepositoryFactory<TargetEntity extends Entity,
|
|
|
14
14
|
*/
|
|
15
15
|
inclusionResolver: InclusionResolver<Entity, TargetEntity>;
|
|
16
16
|
};
|
|
17
|
-
export declare function createHasManyThroughRepositoryFactory<Target extends Entity, TargetID, Through extends Entity, ThroughID, SourceID>(relationMetadata: HasManyDefinition, targetRepositoryGetter: Getter<EntityCrudRepository<Target, TargetID
|
|
17
|
+
export declare function createHasManyThroughRepositoryFactory<Target extends Entity, TargetID, Through extends Entity, ThroughID, SourceID>(relationMetadata: HasManyDefinition, targetRepositoryGetter: Getter<EntityCrudRepository<Target, TargetID>> | {
|
|
18
|
+
[repoType: string]: Getter<EntityCrudRepository<Target, TargetID>>;
|
|
19
|
+
}, throughRepositoryGetter: Getter<EntityCrudRepository<Through, ThroughID>>): HasManyThroughRepositoryFactory<Target, TargetID, Through, SourceID>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2020. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
|
|
3
3
|
// Node module: @loopback/repository
|
|
4
4
|
// This file is licensed under the MIT License.
|
|
5
5
|
// License text available at https://opensource.org/licenses/MIT
|
|
@@ -10,6 +10,12 @@ const has_many_through_inclusion_resolver_1 = require("./has-many-through.inclus
|
|
|
10
10
|
const has_many_through_repository_1 = require("./has-many-through.repository");
|
|
11
11
|
function createHasManyThroughRepositoryFactory(relationMetadata, targetRepositoryGetter, throughRepositoryGetter) {
|
|
12
12
|
const meta = (0, has_many_through_helpers_1.resolveHasManyThroughMetadata)(relationMetadata);
|
|
13
|
+
// resolve the repositoryGetter into a dictionary
|
|
14
|
+
if (typeof targetRepositoryGetter === 'function') {
|
|
15
|
+
targetRepositoryGetter = {
|
|
16
|
+
[meta.target().name]: targetRepositoryGetter,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
13
19
|
const result = function (fkValue) {
|
|
14
20
|
function getTargetConstraintFromThroughModels(throughInstances) {
|
|
15
21
|
return (0, has_many_through_helpers_1.createTargetConstraintFromThrough)(meta, throughInstances);
|
|
@@ -28,7 +34,7 @@ function createHasManyThroughRepositoryFactory(relationMetadata, targetRepositor
|
|
|
28
34
|
const constraint = (0, has_many_through_helpers_1.createThroughConstraintFromTarget)(meta, fkValues);
|
|
29
35
|
return constraint;
|
|
30
36
|
}
|
|
31
|
-
return new has_many_through_repository_1.DefaultHasManyThroughRepository(targetRepositoryGetter, throughRepositoryGetter, getTargetConstraintFromThroughModels, getTargetKeys, getThroughConstraintFromSource, getTargetIds, getThroughConstraintFromTarget);
|
|
37
|
+
return new has_many_through_repository_1.DefaultHasManyThroughRepository(targetRepositoryGetter, throughRepositoryGetter, getTargetConstraintFromThroughModels, getTargetKeys, getThroughConstraintFromSource, getTargetIds, getThroughConstraintFromTarget, relationMetadata.target, relationMetadata.through.model);
|
|
32
38
|
};
|
|
33
39
|
result.inclusionResolver = (0, has_many_through_inclusion_resolver_1.createHasManyThroughInclusionResolver)(meta, throughRepositoryGetter, targetRepositoryGetter);
|
|
34
40
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-many-through.repository-factory.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-through.repository-factory.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"has-many-through.repository-factory.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-through.repository-factory.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAUhE,yEAOoC;AACpC,+FAA4F;AAC5F,+EAGuC;AA4BvC,SAAgB,qCAAqC,CAOnD,gBAAmC,EACnC,sBAIK,EACL,uBAAyE;IAEzE,MAAM,IAAI,GAAG,IAAA,wDAA6B,EAAC,gBAAgB,CAAC,CAAC;IAC7D,iDAAiD;IACjD,IAAI,OAAO,sBAAsB,KAAK,UAAU,EAAE;QAChD,sBAAsB,GAAG;YACvB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,sBAErB;SACF,CAAC;KACH;IACD,MAAM,MAAM,GAAG,UAAU,OAAiB;QACxC,SAAS,oCAAoC,CAC3C,gBAA2B;YAE3B,OAAO,IAAA,4DAAiC,EACtC,IAAI,EACJ,gBAAgB,CACjB,CAAC;QACJ,CAAC;QACD,SAAS,aAAa,CAAC,gBAA2B;YAChD,OAAO,IAAA,yDAA8B,EAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAChE,CAAC;QACD,SAAS,8BAA8B;YACrC,MAAM,UAAU,GAAwB,IAAA,4DAAiC,EAGvE,IAAI,EAAE,OAAO,CAAC,CAAC;YACjB,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,SAAS,YAAY,CAAC,eAAyB;YAC7C,OAAO,IAAA,uDAA4B,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC7D,CAAC;QACD,SAAS,8BAA8B,CACrC,QAAoB;YAEpB,MAAM,UAAU,GAAwB,IAAA,4DAAiC,EAGvE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClB,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,6DAA+B,CAQxC,sBAEC,EACD,uBAAuB,EACvB,oCAAoC,EACpC,aAAa,EACb,8BAA8B,EAC9B,YAAY,EACZ,8BAA8B,EAC9B,gBAAgB,CAAC,MAAM,EACvB,gBAAgB,CAAC,OAAQ,CAAC,KAAK,CAChC,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,CAAC,iBAAiB,GAAG,IAAA,2EAAqC,EAC9D,IAAI,EACJ,uBAAuB,EACvB,sBAEC,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AArFD,sFAqFC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Count, DataObject, Entity, EntityCrudRepository, Filter, Getter, Options, Where } from '../..';
|
|
1
|
+
import { Count, DataObject, Entity, EntityCrudRepository, Filter, Getter, Options, TypeResolver, Where } from '../..';
|
|
2
2
|
/**
|
|
3
3
|
* CRUD operations for a target repository of a HasManyThrough relation
|
|
4
4
|
*
|
|
@@ -10,39 +10,69 @@ export interface HasManyThroughRepository<Target extends Entity, TargetID, Throu
|
|
|
10
10
|
* Create a target model instance
|
|
11
11
|
* @param targetModelData - The target model data
|
|
12
12
|
* @param options - Options for the operation
|
|
13
|
+
* options.polymorphicType a string or a string array of polymorphic type names
|
|
14
|
+
* specify of which concrete model the created instance should be
|
|
13
15
|
* @returns A promise which resolves to the newly created target model instance
|
|
14
16
|
*/
|
|
15
17
|
create(targetModelData: DataObject<Target>, options?: Options & {
|
|
16
18
|
throughData?: DataObject<Through>;
|
|
17
19
|
throughOptions?: Options;
|
|
20
|
+
} & {
|
|
21
|
+
polymorphicType?: string;
|
|
18
22
|
}): Promise<Target>;
|
|
19
23
|
/**
|
|
20
24
|
* Find target model instance(s)
|
|
21
25
|
* @param filter - A filter object for where, order, limit, etc.
|
|
22
26
|
* @param options - Options for the operation
|
|
27
|
+
* options.throughOptions.discriminator - target discriminator field on through
|
|
28
|
+
* options.polymorphicType a string or a string array of polymorphic type names
|
|
29
|
+
* to specify which repositories should are expected to be searched
|
|
30
|
+
* It is highly recommended to contain this param especially for
|
|
31
|
+
* datasources using deplicated ids across tables
|
|
23
32
|
* @returns A promise which resolves with the found target instance(s)
|
|
24
33
|
*/
|
|
25
34
|
find(filter?: Filter<Target>, options?: Options & {
|
|
26
|
-
throughOptions?: Options
|
|
35
|
+
throughOptions?: Options & {
|
|
36
|
+
discriminator?: string;
|
|
37
|
+
};
|
|
38
|
+
} & {
|
|
39
|
+
polymorphicType?: string | string[];
|
|
27
40
|
}): Promise<Target[]>;
|
|
28
41
|
/**
|
|
29
42
|
* Delete multiple target model instances
|
|
30
43
|
* @param where - Instances within the where scope are deleted
|
|
31
44
|
* @param options
|
|
45
|
+
* options.throughOptions.discriminator - target discriminator field on through
|
|
46
|
+
* options.polymorphicType a string or a string array of polymorphic type names
|
|
47
|
+
* to specify which repositories should are expected to be searched
|
|
48
|
+
* It is highly recommended to contain this param especially for
|
|
49
|
+
* datasources using deplicated ids across tables
|
|
32
50
|
* @returns A promise which resolves the deleted target model instances
|
|
33
51
|
*/
|
|
34
52
|
delete(where?: Where<Target>, options?: Options & {
|
|
35
|
-
throughOptions?: Options
|
|
53
|
+
throughOptions?: Options & {
|
|
54
|
+
discriminator?: string;
|
|
55
|
+
};
|
|
56
|
+
} & {
|
|
57
|
+
polymorphicType?: string | string[];
|
|
36
58
|
}): Promise<Count>;
|
|
37
59
|
/**
|
|
38
60
|
* Patch multiple target model instances
|
|
39
61
|
* @param dataObject - The fields and their new values to patch
|
|
40
62
|
* @param where - Instances within the where scope are patched
|
|
41
63
|
* @param options
|
|
64
|
+
* options.throughOptions.discriminator - target discriminator field on through
|
|
65
|
+
* options.isPolymorphic - whether dataObject is a dictionary
|
|
42
66
|
* @returns A promise which resolves the patched target model instances
|
|
43
67
|
*/
|
|
44
|
-
patch(dataObject: DataObject<Target
|
|
45
|
-
|
|
68
|
+
patch(dataObject: DataObject<Target> | {
|
|
69
|
+
[polymorphicType: string]: DataObject<Target>;
|
|
70
|
+
}, where?: Where<Target>, options?: Options & {
|
|
71
|
+
throughOptions?: Options & {
|
|
72
|
+
discriminator?: string;
|
|
73
|
+
};
|
|
74
|
+
} & {
|
|
75
|
+
isPolymorphic?: boolean;
|
|
46
76
|
}): Promise<Count>;
|
|
47
77
|
/**
|
|
48
78
|
* Creates a new many-to-many association to an existing target model instance
|
|
@@ -80,26 +110,51 @@ export interface HasManyThroughRepository<Target extends Entity, TargetID, Throu
|
|
|
80
110
|
* released.
|
|
81
111
|
*/
|
|
82
112
|
export declare class DefaultHasManyThroughRepository<TargetEntity extends Entity, TargetID, TargetRepository extends EntityCrudRepository<TargetEntity, TargetID>, ThroughEntity extends Entity, ThroughID, ThroughRepository extends EntityCrudRepository<ThroughEntity, ThroughID>> implements HasManyThroughRepository<TargetEntity, TargetID, ThroughEntity> {
|
|
83
|
-
getTargetRepository: Getter<TargetRepository
|
|
113
|
+
getTargetRepository: Getter<TargetRepository> | {
|
|
114
|
+
[repoType: string]: Getter<TargetRepository>;
|
|
115
|
+
};
|
|
84
116
|
getThroughRepository: Getter<ThroughRepository>;
|
|
85
117
|
getTargetConstraintFromThroughModels: (throughInstances: ThroughEntity[]) => DataObject<TargetEntity>;
|
|
86
118
|
getTargetKeys: (throughInstances: ThroughEntity[]) => TargetID[];
|
|
87
119
|
getThroughConstraintFromSource: () => DataObject<ThroughEntity>;
|
|
88
120
|
getTargetIds: (targetInstances: TargetEntity[]) => TargetID[];
|
|
89
121
|
getThroughConstraintFromTarget: (targetID: TargetID[]) => DataObject<ThroughEntity>;
|
|
90
|
-
|
|
122
|
+
targetResolver: TypeResolver<Entity, typeof Entity>;
|
|
123
|
+
throughResolver: TypeResolver<Entity, typeof Entity>;
|
|
124
|
+
constructor(getTargetRepository: Getter<TargetRepository> | {
|
|
125
|
+
[repoType: string]: Getter<TargetRepository>;
|
|
126
|
+
}, getThroughRepository: Getter<ThroughRepository>, getTargetConstraintFromThroughModels: (throughInstances: ThroughEntity[]) => DataObject<TargetEntity>, getTargetKeys: (throughInstances: ThroughEntity[]) => TargetID[], getThroughConstraintFromSource: () => DataObject<ThroughEntity>, getTargetIds: (targetInstances: TargetEntity[]) => TargetID[], getThroughConstraintFromTarget: (targetID: TargetID[]) => DataObject<ThroughEntity>, targetResolver: TypeResolver<Entity, typeof Entity>, throughResolver: TypeResolver<Entity, typeof Entity>);
|
|
127
|
+
getTargetRepositoryDict: {
|
|
128
|
+
[repoType: string]: Getter<TargetRepository>;
|
|
129
|
+
};
|
|
91
130
|
create(targetModelData: DataObject<TargetEntity>, options?: Options & {
|
|
92
131
|
throughData?: DataObject<ThroughEntity>;
|
|
93
132
|
throughOptions?: Options;
|
|
133
|
+
} & {
|
|
134
|
+
polymorphicType?: string;
|
|
94
135
|
}): Promise<TargetEntity>;
|
|
95
136
|
find(filter?: Filter<TargetEntity>, options?: Options & {
|
|
96
|
-
throughOptions?: Options
|
|
137
|
+
throughOptions?: Options & {
|
|
138
|
+
discriminator?: string;
|
|
139
|
+
};
|
|
140
|
+
} & {
|
|
141
|
+
polymorphicType?: string | string[];
|
|
97
142
|
}): Promise<TargetEntity[]>;
|
|
98
143
|
delete(where?: Where<TargetEntity>, options?: Options & {
|
|
99
|
-
throughOptions?: Options
|
|
144
|
+
throughOptions?: Options & {
|
|
145
|
+
discriminator?: string;
|
|
146
|
+
};
|
|
147
|
+
} & {
|
|
148
|
+
polymorphicType?: string | string[];
|
|
100
149
|
}): Promise<Count>;
|
|
101
|
-
patch(dataObject: DataObject<TargetEntity
|
|
102
|
-
|
|
150
|
+
patch(dataObject: DataObject<TargetEntity> | {
|
|
151
|
+
[polymorphicType: string]: DataObject<TargetEntity>;
|
|
152
|
+
}, where?: Where<TargetEntity>, options?: Options & {
|
|
153
|
+
throughOptions?: Options & {
|
|
154
|
+
discriminator?: string;
|
|
155
|
+
};
|
|
156
|
+
} & {
|
|
157
|
+
isPolymorphic?: boolean;
|
|
103
158
|
}): Promise<Count>;
|
|
104
159
|
link(targetId: TargetID, options?: Options & {
|
|
105
160
|
throughData?: DataObject<ThroughEntity>;
|