@loopback/repository 4.1.1 → 5.0.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/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 +4 -4
- 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 +4 -4
- 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 +2 -2
- package/dist/decorators/repository.decorator.js.map +1 -1
- package/dist/define-model-class.js +2 -2
- package/dist/define-model-class.js.map +1 -1
- package/dist/define-repository-class.js +2 -2
- 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 +4 -3
- 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 +17 -17
- package/dist/index.js.map +1 -1
- package/dist/mixins/index.js +2 -2
- package/dist/mixins/index.js.map +1 -1
- package/dist/mixins/repository.mixin.d.ts +49 -50
- package/dist/mixins/repository.mixin.js +2 -2
- 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 +20 -7
- 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 +34 -10
- 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 +5 -5
- 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 +27 -3
- 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 +94 -23
- 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 +2 -2
- package/dist/relations/has-many/has-many.helpers.js.map +1 -1
- package/dist/relations/has-many/has-many.inclusion-resolver.js +2 -2
- package/dist/relations/has-many/has-many.inclusion-resolver.js.map +1 -1
- package/dist/relations/has-many/has-many.repository-factory.js +2 -2
- 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 +7 -7
- 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 +36 -10
- 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 +15 -5
- 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 +4 -4
- package/dist/relations/has-one/index.js.map +1 -1
- package/dist/relations/index.d.ts +2 -0
- package/dist/relations/index.js +9 -7
- 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 +20 -5
- 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 +6 -6
- 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 +35 -8
- package/dist/repositories/legacy-juggler-bridge.js +39 -17
- 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 +2 -2
- 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 +2 -2
- package/dist/types/buffer.js.map +1 -1
- package/dist/types/date.js +2 -2
- 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 +2 -2
- package/dist/types/number.js.map +1 -1
- package/dist/types/object.js +2 -2
- 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 +2 -2
- package/dist/types/union.js.map +1 -1
- package/package.json +17 -17
- 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 +17 -2
- 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 +79 -15
- 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,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2018,2020. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2018,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,7 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.createModelClassBinding = exports.RepositoryMixinDoc = exports.RepositoryMixin = void 0;
|
|
8
8
|
const tslib_1 = require("tslib");
|
|
9
9
|
const core_1 = require("@loopback/core");
|
|
10
|
-
const debug_1 =
|
|
10
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
11
11
|
const keys_1 = require("../keys");
|
|
12
12
|
const repositories_1 = require("../repositories");
|
|
13
13
|
const debug = (0, debug_1.default)('loopback:repository:mixin');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mixin.js","sourceRoot":"","sources":["../../src/mixins/repository.mixin.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"repository.mixin.js","sourceRoot":"","sources":["../../src/mixins/repository.mixin.ts"],"names":[],"mappings":"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"}
|
package/dist/model.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AnyObject, DataObject, Options, PrototypeOf } from './common-types';
|
|
2
|
-
import { BelongsToDefinition, HasManyDefinition, HasOneDefinition, JsonSchema, RelationMetadata } from './index';
|
|
2
|
+
import { BelongsToDefinition, HasManyDefinition, HasOneDefinition, JsonSchema, ReferencesManyDefinition, RelationMetadata } from './index';
|
|
3
3
|
import { TypeResolver } from './type-resolver';
|
|
4
4
|
import { Type } from './types';
|
|
5
5
|
/**
|
|
@@ -130,6 +130,12 @@ export declare class ModelDefinition {
|
|
|
130
130
|
* @param definition - The definition of the hasMany relation.
|
|
131
131
|
*/
|
|
132
132
|
hasMany(name: string, definition: Omit<HasManyDefinition, 'name' | 'type' | 'targetsMany'>): this;
|
|
133
|
+
/**
|
|
134
|
+
* Define a new referencesMany relation.
|
|
135
|
+
* @param name - The name of the referencesMany relation.
|
|
136
|
+
* @param definition - The definition of the referencesMany relation.
|
|
137
|
+
*/
|
|
138
|
+
referencesMany(name: string, definition: Omit<ReferencesManyDefinition, 'name' | 'type' | 'targetsMany'>): this;
|
|
133
139
|
/**
|
|
134
140
|
* Get an array of names of ID properties, which are specified in
|
|
135
141
|
* the model settings or properties with `id` attribute.
|
package/dist/model.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2017,2020. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2017,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
|
|
@@ -102,6 +102,20 @@ class ModelDefinition {
|
|
|
102
102
|
};
|
|
103
103
|
return this.addRelation(meta);
|
|
104
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Define a new referencesMany relation.
|
|
107
|
+
* @param name - The name of the referencesMany relation.
|
|
108
|
+
* @param definition - The definition of the referencesMany relation.
|
|
109
|
+
*/
|
|
110
|
+
referencesMany(name, definition) {
|
|
111
|
+
const meta = {
|
|
112
|
+
...definition,
|
|
113
|
+
name,
|
|
114
|
+
type: index_1.RelationType.referencesMany,
|
|
115
|
+
targetsMany: true,
|
|
116
|
+
};
|
|
117
|
+
return this.addRelation(meta);
|
|
118
|
+
}
|
|
105
119
|
/**
|
|
106
120
|
* Get an array of names of ID properties, which are specified in
|
|
107
121
|
* the model settings or properties with `id` attribute.
|
package/dist/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export interface BelongsToAccessor<Target extends Entity, SourceId> {
|
|
|
5
5
|
/**
|
|
6
6
|
* Invoke the function to obtain HasManyRepository.
|
|
7
7
|
*/
|
|
8
|
-
(sourceId: SourceId): Promise<Target>;
|
|
8
|
+
(sourceId: SourceId, polymorphicTypes?: string | string[]): Promise<Target>;
|
|
9
9
|
/**
|
|
10
10
|
* Use `resolver` property to obtain an InclusionResolver for this relation.
|
|
11
11
|
*/
|
|
@@ -13,5 +13,9 @@ export interface BelongsToAccessor<Target extends Entity, SourceId> {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Enforces a BelongsTo constraint on a repository
|
|
16
|
+
* If the target model is polymorphic, i.e. stored within different repositories,
|
|
17
|
+
* supply the targetRepositoryGetter with a dictionary in the form of {[typeName: string]: repositoryGetter}
|
|
16
18
|
*/
|
|
17
|
-
export declare function createBelongsToAccessor<Target extends Entity, TargetId, Source extends Entity, SourceId>(belongsToMetadata: BelongsToDefinition,
|
|
19
|
+
export declare function createBelongsToAccessor<Target extends Entity, TargetId, Source extends Entity, SourceId>(belongsToMetadata: BelongsToDefinition, targetRepositoryGetter: Getter<EntityCrudRepository<Target, TargetId>> | {
|
|
20
|
+
[repoType: string]: Getter<EntityCrudRepository<Target, TargetId>>;
|
|
21
|
+
}, sourceRepository: EntityCrudRepository<Source, SourceId>): BelongsToAccessor<Target, SourceId>;
|
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2018,2019. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2018,2019. 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
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.createBelongsToAccessor = void 0;
|
|
8
8
|
const tslib_1 = require("tslib");
|
|
9
|
-
const debug_1 =
|
|
9
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
10
10
|
const belongs_to_helpers_1 = require("./belongs-to.helpers");
|
|
11
11
|
const belongs_to_inclusion_resolver_1 = require("./belongs-to.inclusion-resolver");
|
|
12
12
|
const belongs_to_repository_1 = require("./belongs-to.repository");
|
|
13
13
|
const debug = (0, debug_1.default)('loopback:repository:relations:belongs-to:accessor');
|
|
14
14
|
/**
|
|
15
15
|
* Enforces a BelongsTo constraint on a repository
|
|
16
|
+
* If the target model is polymorphic, i.e. stored within different repositories,
|
|
17
|
+
* supply the targetRepositoryGetter with a dictionary in the form of {[typeName: string]: repositoryGetter}
|
|
16
18
|
*/
|
|
17
|
-
function createBelongsToAccessor(belongsToMetadata,
|
|
19
|
+
function createBelongsToAccessor(belongsToMetadata, targetRepositoryGetter, sourceRepository) {
|
|
18
20
|
const meta = (0, belongs_to_helpers_1.resolveBelongsToMetadata)(belongsToMetadata);
|
|
21
|
+
// resolve the repositoryGetter into a dictionary
|
|
22
|
+
if (typeof targetRepositoryGetter === 'function') {
|
|
23
|
+
targetRepositoryGetter = {
|
|
24
|
+
[meta.target().name]: targetRepositoryGetter,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
19
27
|
debug('Resolved BelongsTo relation metadata: %o', meta);
|
|
20
|
-
const result = async function getTargetInstanceOfBelongsTo(sourceId) {
|
|
28
|
+
const result = async function getTargetInstanceOfBelongsTo(sourceId, polymorphicTypes) {
|
|
29
|
+
if (meta.polymorphic !== false) {
|
|
30
|
+
if (!polymorphicTypes || polymorphicTypes.length === 0) {
|
|
31
|
+
console.warn('It is highly recommended to specify the polymorphicTypes param when using polymorphic types.');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
21
34
|
const foreignKey = meta.keyFrom;
|
|
22
35
|
const primaryKey = meta.keyTo;
|
|
23
36
|
const sourceModel = await sourceRepository.findById(sourceId);
|
|
@@ -30,10 +43,10 @@ function createBelongsToAccessor(belongsToMetadata, targetRepoGetter, sourceRepo
|
|
|
30
43
|
}
|
|
31
44
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
45
|
const constraint = { [primaryKey]: foreignKeyValue };
|
|
33
|
-
const constrainedRepo = new belongs_to_repository_1.DefaultBelongsToRepository(
|
|
34
|
-
return constrainedRepo.get();
|
|
46
|
+
const constrainedRepo = new belongs_to_repository_1.DefaultBelongsToRepository(targetRepositoryGetter, constraint, belongsToMetadata.target);
|
|
47
|
+
return constrainedRepo.get({ polymorphicType: polymorphicTypes });
|
|
35
48
|
};
|
|
36
|
-
result.inclusionResolver = (0, belongs_to_inclusion_resolver_1.createBelongsToInclusionResolver)(meta,
|
|
49
|
+
result.inclusionResolver = (0, belongs_to_inclusion_resolver_1.createBelongsToInclusionResolver)(meta, targetRepositoryGetter);
|
|
37
50
|
return result;
|
|
38
51
|
}
|
|
39
52
|
exports.createBelongsToAccessor = createBelongsToAccessor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongs-to.accessor.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.accessor.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"belongs-to.accessor.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.accessor.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,0DAAiC;AASjC,6DAA8D;AAC9D,mFAAiF;AACjF,mEAAmE;AAEnE,MAAM,KAAK,GAAG,IAAA,eAAY,EAAC,mDAAmD,CAAC,CAAC;AAchF;;;;GAIG;AACH,SAAgB,uBAAuB,CAMrC,iBAAsC,EACtC,sBAIK,EACL,gBAAwD;IAExD,MAAM,IAAI,GAAG,IAAA,6CAAwB,EAAC,iBAAiB,CAAC,CAAC;IACzD,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,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,MAAM,GACV,KAAK,UAAU,4BAA4B,CACzC,QAAkB,EAClB,gBAAoC;QAEpC,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;YAC9B,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtD,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;aACH;SACF;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,WAAW,CAAC,UAA0B,CAAC,CAAC;QAChE,6CAA6C;QAC7C,oEAAoE;QACpE,oEAAoE;QACpE,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,SAA8B,CAAC;SACvC;QACD,8DAA8D;QAC9D,MAAM,UAAU,GAAQ,EAAC,CAAC,UAAU,CAAC,EAAE,eAAe,EAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAI,kDAA0B,CACpD,sBAEC,EACD,UAAgC,EAChC,iBAAiB,CAAC,MAAM,CACzB,CAAC;QACF,OAAO,eAAe,CAAC,GAAG,CAAC,EAAC,eAAe,EAAE,gBAAgB,EAAC,CAAC,CAAC;IAClE,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,GAAG,IAAA,gEAAgC,EACzD,IAAI,EACJ,sBAEC,CACF,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAjED,0DAiEC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2018,2020. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2018,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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongs-to.decorator.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.decorator.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"belongs-to.decorator.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.decorator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAEhE,yCAAmE;AACnE,iDAA0C;AAE1C,8DAA+C;AAC/C,sDAAoE;AAEpE;;;;;;;GAOG;AACH,SAAgB,SAAS,CACvB,cAAiC,EACjC,UAAyC,EACzC,kBAAgD;IAEhD,OAAO,UAAU,eAAuB,EAAE,YAAoB;;QAC5D,MAAM,QAAQ,GACZ,MAAA,wBAAiB,CAAC,wBAAwB,CACxC,eAAe,EACf,YAAY,CACb,mCAAI,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,CAAC;QAEhC,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,YAAY,GAAG,uBAAgB,CAAC,aAAa,CACjD,eAAe,EACf,YAAY,CACb,CAAC;YACF,MAAM,IAAI,KAAK,CACb,uCAAuC,YAAY,WAAW;gBAC5D,iEAAiE;gBACjE,qEAAqE;gBACrE,iEAAiE,CACpE,CAAC;SACH;QAED,MAAM,QAAQ,GAAuB,MAAM,CAAC,MAAM,CAChD,EAAE;QACF,oCAAoC;QACpC,kBAAkB;QAClB,uCAAuC;QACvC;YACE,IAAI,EAAE,QAAQ;YACd,qEAAqE;YACrE,2DAA2D;YAC3D,kBAAkB;SACnB,CACF,CAAC;QACF,IAAA,qBAAQ,EAAC,QAAQ,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAElD,iEAAiE;QACjE,4EAA4E;QAC5E,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAErD,MAAM,IAAI,GAAwB,MAAM,CAAC,MAAM;QAC7C,kDAAkD;QAClD;YACE,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,YAAY;SACnB;QACD,oCAAoC;QACpC,UAAU;QACV,uCAAuC;QACvC;YACE,IAAI,EAAE,6BAAY,CAAC,SAAS;YAC5B,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,eAAe,CAAC,WAAW;YACnC,MAAM,EAAE,cAAc;SACvB,CACF,CAAC;QACF,IAAA,6BAAQ,EAAC,IAAI,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC,CAAC;AACJ,CAAC;AA7DD,8BA6DC"}
|
|
@@ -6,6 +6,9 @@ import { BelongsToDefinition } from '../relation.types';
|
|
|
6
6
|
export declare type BelongsToResolvedDefinition = BelongsToDefinition & {
|
|
7
7
|
keyFrom: string;
|
|
8
8
|
keyTo: string;
|
|
9
|
+
polymorphic: false | {
|
|
10
|
+
discriminator: string;
|
|
11
|
+
};
|
|
9
12
|
};
|
|
10
13
|
/**
|
|
11
14
|
* Resolves given belongsTo metadata if target is specified to be a resolver.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2019. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2019. 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
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.resolveBelongsToMetadata = void 0;
|
|
8
8
|
const tslib_1 = require("tslib");
|
|
9
|
-
const debug_1 =
|
|
9
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
10
10
|
const lodash_1 = require("lodash");
|
|
11
11
|
const errors_1 = require("../../errors");
|
|
12
12
|
const type_resolver_1 = require("../../type-resolver");
|
|
@@ -46,18 +46,42 @@ function resolveBelongsToMetadata(relationMeta) {
|
|
|
46
46
|
}
|
|
47
47
|
const targetProperties = targetModel.definition.properties;
|
|
48
48
|
debug('relation metadata from %o: %o', targetName, targetProperties);
|
|
49
|
+
let keyTo;
|
|
49
50
|
if (relationMeta.keyTo && targetProperties[relationMeta.keyTo]) {
|
|
50
51
|
// The explicit cast is needed because of a limitation of type inference
|
|
51
|
-
|
|
52
|
-
keyFrom,
|
|
53
|
-
});
|
|
52
|
+
keyTo = relationMeta.keyTo;
|
|
54
53
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
else {
|
|
55
|
+
keyTo = targetModel.definition.idProperties()[0];
|
|
56
|
+
if (!keyTo) {
|
|
57
|
+
const reason = `${targetName} does not have any primary key (id property)`;
|
|
58
|
+
throw new errors_1.InvalidRelationError(reason, relationMeta);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
let polymorphic;
|
|
62
|
+
if (relationMeta.polymorphic === undefined ||
|
|
63
|
+
relationMeta.polymorphic === false ||
|
|
64
|
+
!relationMeta.polymorphic) {
|
|
65
|
+
const polymorphicFalse = false;
|
|
66
|
+
polymorphic = polymorphicFalse;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
if (relationMeta.polymorphic === true) {
|
|
70
|
+
const polymorphicObject = {
|
|
71
|
+
discriminator: (0, lodash_1.camelCase)(relationMeta.target().name + '_type'),
|
|
72
|
+
};
|
|
73
|
+
polymorphic = polymorphicObject;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const polymorphicObject = relationMeta.polymorphic;
|
|
77
|
+
polymorphic = polymorphicObject;
|
|
78
|
+
}
|
|
59
79
|
}
|
|
60
|
-
return Object.assign(relationMeta, {
|
|
80
|
+
return Object.assign(relationMeta, {
|
|
81
|
+
keyFrom,
|
|
82
|
+
keyTo: keyTo,
|
|
83
|
+
polymorphic: polymorphic,
|
|
84
|
+
});
|
|
61
85
|
}
|
|
62
86
|
exports.resolveBelongsToMetadata = resolveBelongsToMetadata;
|
|
63
87
|
//# sourceMappingURL=belongs-to.helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongs-to.helpers.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.helpers.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"belongs-to.helpers.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@ import { BelongsToDefinition, Getter, InclusionResolver } from '../relation.type
|
|
|
9
9
|
* Notice: scope field for inclusion is not supported yet
|
|
10
10
|
*
|
|
11
11
|
* @param meta - resolved BelongsToMetadata
|
|
12
|
-
* @param
|
|
12
|
+
* @param getTargetRepoDict - dictionary of target model type - target repository
|
|
13
|
+
* i.e where related instances for different types are
|
|
13
14
|
*/
|
|
14
|
-
export declare function createBelongsToInclusionResolver<Target extends Entity, TargetID, TargetRelations extends object>(meta: BelongsToDefinition,
|
|
15
|
+
export declare function createBelongsToInclusionResolver<Target extends Entity, TargetID, TargetRelations extends object>(meta: BelongsToDefinition, getTargetRepoDict: {
|
|
16
|
+
[repoType: string]: Getter<EntityCrudRepository<Target, TargetID, TargetRelations>>;
|
|
17
|
+
}): InclusionResolver<Entity, Target>;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2019,2020. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2019,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
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.createBelongsToInclusionResolver = void 0;
|
|
8
|
+
const __1 = require("../../");
|
|
8
9
|
const relation_helpers_1 = require("../relation.helpers");
|
|
9
10
|
const belongs_to_helpers_1 = require("./belongs-to.helpers");
|
|
10
11
|
/**
|
|
@@ -15,21 +16,93 @@ const belongs_to_helpers_1 = require("./belongs-to.helpers");
|
|
|
15
16
|
* Notice: scope field for inclusion is not supported yet
|
|
16
17
|
*
|
|
17
18
|
* @param meta - resolved BelongsToMetadata
|
|
18
|
-
* @param
|
|
19
|
+
* @param getTargetRepoDict - dictionary of target model type - target repository
|
|
20
|
+
* i.e where related instances for different types are
|
|
19
21
|
*/
|
|
20
|
-
function createBelongsToInclusionResolver(meta,
|
|
22
|
+
function createBelongsToInclusionResolver(meta, getTargetRepoDict) {
|
|
21
23
|
const relationMeta = (0, belongs_to_helpers_1.resolveBelongsToMetadata)(meta);
|
|
22
|
-
return async function
|
|
24
|
+
return async function fetchBelongsToModel(entities, inclusion, options) {
|
|
23
25
|
if (!entities.length)
|
|
24
26
|
return [];
|
|
27
|
+
// Source ids are grouped by their target polymorphic types
|
|
28
|
+
// Each type search for target instances and then merge together in a merge-sort-like manner
|
|
25
29
|
const sourceKey = relationMeta.keyFrom;
|
|
26
|
-
const sourceIds = entities.map(e => e[sourceKey]);
|
|
27
30
|
const targetKey = relationMeta.keyTo;
|
|
28
|
-
const
|
|
31
|
+
const targetDiscriminator = relationMeta.polymorphic
|
|
32
|
+
? relationMeta.polymorphic.discriminator
|
|
33
|
+
: undefined;
|
|
29
34
|
const scope = typeof inclusion === 'string' ? {} : inclusion.scope;
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
|
|
35
|
+
// sourceIds in {targetType -> sourceId}
|
|
36
|
+
const sourceIdsCategorized = {};
|
|
37
|
+
if (targetDiscriminator) {
|
|
38
|
+
entities.forEach((value, index, allEntites) => {
|
|
39
|
+
const concreteType = String(value[targetDiscriminator]);
|
|
40
|
+
if (!getTargetRepoDict[concreteType]) {
|
|
41
|
+
throw new __1.InvalidPolymorphismError(concreteType, targetDiscriminator);
|
|
42
|
+
}
|
|
43
|
+
if (!sourceIdsCategorized[concreteType]) {
|
|
44
|
+
sourceIdsCategorized[concreteType] = [];
|
|
45
|
+
}
|
|
46
|
+
sourceIdsCategorized[concreteType].push(value[sourceKey]);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const concreteType = relationMeta.target().name;
|
|
51
|
+
if (!getTargetRepoDict[concreteType]) {
|
|
52
|
+
throw new __1.InvalidPolymorphismError(concreteType);
|
|
53
|
+
}
|
|
54
|
+
entities.forEach((value, index, allEntites) => {
|
|
55
|
+
if (!sourceIdsCategorized[concreteType]) {
|
|
56
|
+
sourceIdsCategorized[concreteType] = [];
|
|
57
|
+
}
|
|
58
|
+
sourceIdsCategorized[concreteType].push(value[sourceKey]);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// Ensure targetKey is included otherwise flatten function cannot work
|
|
62
|
+
const changedTargetKeyField = (0, __1.includeFieldIfNot)(scope === null || scope === void 0 ? void 0 : scope.fields, targetKey);
|
|
63
|
+
let needToRemoveTargetKeyFieldLater = false;
|
|
64
|
+
if (changedTargetKeyField !== false) {
|
|
65
|
+
scope.fields = changedTargetKeyField;
|
|
66
|
+
needToRemoveTargetKeyFieldLater = true;
|
|
67
|
+
}
|
|
68
|
+
// Each sourceIds array with same target type extract target instances
|
|
69
|
+
const targetCategorized = {};
|
|
70
|
+
for (const k of Object.keys(sourceIdsCategorized)) {
|
|
71
|
+
const targetRepo = await getTargetRepoDict[k]();
|
|
72
|
+
const targetsFound = await (0, relation_helpers_1.findByForeignKeys)(targetRepo, targetKey, (0, relation_helpers_1.deduplicate)(sourceIdsCategorized[k]).filter(e => e), scope, options);
|
|
73
|
+
targetCategorized[k] = (0, relation_helpers_1.flattenTargetsOfOneToOneRelation)(sourceIdsCategorized[k], targetsFound, targetKey);
|
|
74
|
+
// Remove targetKey if should be excluded but included above
|
|
75
|
+
if (needToRemoveTargetKeyFieldLater) {
|
|
76
|
+
targetCategorized[k] = targetCategorized[k].map(e => {
|
|
77
|
+
if (e) {
|
|
78
|
+
delete e[targetKey];
|
|
79
|
+
}
|
|
80
|
+
return e;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Merge
|
|
85
|
+
// Why the order is correct:
|
|
86
|
+
// e.g. target model 1 = a, target model 2 = b
|
|
87
|
+
// all entities: [S(a-1), S(a-2), S(b-3), S(a-4), S(b-5)]
|
|
88
|
+
// a-result: [a-1, a-2, a-4]
|
|
89
|
+
// b-result: [b-3, b-4]
|
|
90
|
+
// merged:
|
|
91
|
+
// entities[1]->a => targets: [a-1 from a-result.shift()]
|
|
92
|
+
// entities[2]->a => targets: [a-1, a-2 from a-result.shift()]
|
|
93
|
+
// entities[3]->b => targets: [a-1, a-2, b-3 from b-result.shift()]
|
|
94
|
+
// entities[4]->a => targets: [a-1, a-2, b-3, a-4 from a-result.shift()]
|
|
95
|
+
// entities[5]->b => targets: [a-1, a-2, b-3, a-4, b-5 from b-result.shift()]
|
|
96
|
+
if (targetDiscriminator) {
|
|
97
|
+
const allTargets = [];
|
|
98
|
+
entities.forEach((value, index, allEntites) => {
|
|
99
|
+
allTargets.push(targetCategorized[String(value[targetDiscriminator])].shift());
|
|
100
|
+
});
|
|
101
|
+
return allTargets;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return targetCategorized[relationMeta.target().name];
|
|
105
|
+
}
|
|
33
106
|
};
|
|
34
107
|
}
|
|
35
108
|
exports.createBelongsToInclusionResolver = createBelongsToInclusionResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongs-to.inclusion-resolver.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.inclusion-resolver.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"belongs-to.inclusion-resolver.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.inclusion-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Getter } from '@loopback/core';
|
|
2
|
+
import { TypeResolver } from '../../';
|
|
2
3
|
import { DataObject, Options } from '../../common-types';
|
|
3
4
|
import { Entity } from '../../model';
|
|
4
5
|
import { EntityCrudRepository } from '../../repositories';
|
|
@@ -9,20 +10,42 @@ export interface BelongsToRepository<Target extends Entity> {
|
|
|
9
10
|
/**
|
|
10
11
|
* Gets the target model instance
|
|
11
12
|
* @param options
|
|
13
|
+
* options.polymorphicType - a string or a string array of polymorphic type names
|
|
14
|
+
* to specify which repositories should are expected to be searched
|
|
15
|
+
* It is highly recommended to contain this param especially for
|
|
16
|
+
* datasources using deplicated ids across tables
|
|
12
17
|
* @returns A promise resolved with the target object or rejected
|
|
13
18
|
* with an EntityNotFoundError when target model instance was not found.
|
|
14
19
|
*/
|
|
15
|
-
get(options?: Options
|
|
20
|
+
get(options?: Options & {
|
|
21
|
+
polymorphicType?: string | string[];
|
|
22
|
+
}): Promise<Target>;
|
|
16
23
|
}
|
|
17
24
|
export declare class DefaultBelongsToRepository<TargetEntity extends Entity, TargetId, TargetRepository extends EntityCrudRepository<TargetEntity, TargetId>> implements BelongsToRepository<TargetEntity> {
|
|
18
|
-
getTargetRepository: Getter<TargetRepository
|
|
25
|
+
getTargetRepository: Getter<TargetRepository> | {
|
|
26
|
+
[repoType: string]: Getter<TargetRepository>;
|
|
27
|
+
};
|
|
19
28
|
constraint: DataObject<TargetEntity>;
|
|
29
|
+
targetResolver: TypeResolver<Entity, typeof Entity>;
|
|
20
30
|
/**
|
|
21
31
|
* Constructor of DefaultBelongsToEntityCrudRepository
|
|
22
|
-
* @param getTargetRepository -
|
|
32
|
+
* @param getTargetRepository - either a dictionary of target model type - target repository instance
|
|
33
|
+
* or a single target repository instance
|
|
34
|
+
* e.g. if the target is of a non-polymorphic type "Student", put the studentRepositoryGetterInstance
|
|
35
|
+
* if the target is of a polymorphic type "Person" which can be either a "Student" or a "Teacher"
|
|
36
|
+
* then put "{Student: studentRepositoryGetterInstance, Teacher: teacherRepositoryGetterInstance}"
|
|
23
37
|
* @param constraint - the key value pair representing foreign key name to constrain
|
|
24
38
|
* the target repository instance
|
|
39
|
+
* @param targetResolver - () => Target to resolve the target class
|
|
40
|
+
* e.g. if the target is of type "Student", then put "() => Student"
|
|
25
41
|
*/
|
|
26
|
-
constructor(getTargetRepository: Getter<TargetRepository
|
|
27
|
-
|
|
42
|
+
constructor(getTargetRepository: Getter<TargetRepository> | {
|
|
43
|
+
[repoType: string]: Getter<TargetRepository>;
|
|
44
|
+
}, constraint: DataObject<TargetEntity>, targetResolver: TypeResolver<Entity, typeof Entity>);
|
|
45
|
+
getTargetRepositoryDict: {
|
|
46
|
+
[repoType: string]: Getter<TargetRepository>;
|
|
47
|
+
};
|
|
48
|
+
get(options?: Options & {
|
|
49
|
+
polymorphicType?: string | string[];
|
|
50
|
+
}): Promise<TargetEntity>;
|
|
28
51
|
}
|
|
@@ -1,32 +1,71 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright IBM Corp. 2018,2020. All Rights Reserved.
|
|
2
|
+
// Copyright IBM Corp. and LoopBack contributors 2018,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
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.DefaultBelongsToRepository = void 0;
|
|
8
|
-
const
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
const __1 = require("../../");
|
|
9
10
|
const repositories_1 = require("../../repositories");
|
|
10
11
|
class DefaultBelongsToRepository {
|
|
11
12
|
/**
|
|
12
13
|
* Constructor of DefaultBelongsToEntityCrudRepository
|
|
13
|
-
* @param getTargetRepository -
|
|
14
|
+
* @param getTargetRepository - either a dictionary of target model type - target repository instance
|
|
15
|
+
* or a single target repository instance
|
|
16
|
+
* e.g. if the target is of a non-polymorphic type "Student", put the studentRepositoryGetterInstance
|
|
17
|
+
* if the target is of a polymorphic type "Person" which can be either a "Student" or a "Teacher"
|
|
18
|
+
* then put "{Student: studentRepositoryGetterInstance, Teacher: teacherRepositoryGetterInstance}"
|
|
14
19
|
* @param constraint - the key value pair representing foreign key name to constrain
|
|
15
20
|
* the target repository instance
|
|
21
|
+
* @param targetResolver - () => Target to resolve the target class
|
|
22
|
+
* e.g. if the target is of type "Student", then put "() => Student"
|
|
16
23
|
*/
|
|
17
|
-
constructor(getTargetRepository, constraint) {
|
|
24
|
+
constructor(getTargetRepository, constraint, targetResolver) {
|
|
18
25
|
this.getTargetRepository = getTargetRepository;
|
|
19
26
|
this.constraint = constraint;
|
|
27
|
+
this.targetResolver = targetResolver;
|
|
28
|
+
if (typeof getTargetRepository === 'function') {
|
|
29
|
+
this.getTargetRepositoryDict = {
|
|
30
|
+
[targetResolver().name]: getTargetRepository,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.getTargetRepositoryDict = getTargetRepository;
|
|
35
|
+
}
|
|
20
36
|
}
|
|
21
37
|
async get(options) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
38
|
+
let polymorphicTypes = options === null || options === void 0 ? void 0 : options.polymorphicType;
|
|
39
|
+
let allKeys;
|
|
40
|
+
if (Object.keys(this.getTargetRepositoryDict).length <= 1) {
|
|
41
|
+
allKeys = Object.keys(this.getTargetRepositoryDict);
|
|
42
|
+
}
|
|
43
|
+
else if (!polymorphicTypes || polymorphicTypes.length === 0) {
|
|
44
|
+
console.warn('It is highly recommended to specify the polymorphicTypes param when using polymorphic types.');
|
|
45
|
+
allKeys = Object.keys(this.getTargetRepositoryDict);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (typeof polymorphicTypes === 'string') {
|
|
49
|
+
polymorphicTypes = [polymorphicTypes];
|
|
50
|
+
}
|
|
51
|
+
allKeys = [];
|
|
52
|
+
new Set(polymorphicTypes).forEach(element => {
|
|
53
|
+
if (Object.keys(this.getTargetRepositoryDict).includes(element)) {
|
|
54
|
+
allKeys.push(element);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
let result = [];
|
|
59
|
+
for (const key of allKeys) {
|
|
60
|
+
const targetRepository = await this.getTargetRepositoryDict[key]();
|
|
61
|
+
result = result.concat(await targetRepository.find((0, repositories_1.constrainFilter)(undefined, this.constraint), Object.assign((0, lodash_1.cloneDeep)(options !== null && options !== void 0 ? options : {}), { polymorphicType: key })));
|
|
62
|
+
if (result.length >= 1) {
|
|
63
|
+
return result[0];
|
|
64
|
+
}
|
|
28
65
|
}
|
|
29
|
-
|
|
66
|
+
// We don't have a direct access to the foreign key value here :(
|
|
67
|
+
const id = 'constraint ' + JSON.stringify(this.constraint);
|
|
68
|
+
throw new __1.EntityNotFoundError(this.targetResolver().name, id);
|
|
30
69
|
}
|
|
31
70
|
}
|
|
32
71
|
exports.DefaultBelongsToRepository = DefaultBelongsToRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongs-to.repository.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.repository.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"belongs-to.repository.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.repository.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;AAGhE,mCAAiC;AACjC,8BAAyD;AAGzD,qDAAyE;AAoBzE,MAAa,0BAA0B;IAMrC;;;;;;;;;;;OAWG;IAEH,YACS,mBAIF,EACE,UAAoC,EACpC,cAAmD;QANnD,wBAAmB,GAAnB,mBAAmB,CAIrB;QACE,eAAU,GAAV,UAAU,CAA0B;QACpC,mBAAc,GAAd,cAAc,CAAqC;QAE1D,IAAI,OAAO,mBAAmB,KAAK,UAAU,EAAE;YAC7C,IAAI,CAAC,uBAAuB,GAAG;gBAC7B,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,EACrB,mBAA+C;aAClD,CAAC;SACH;aAAM;YACL,IAAI,CAAC,uBAAuB,GAAG,mBAE9B,CAAC;SACH;IACH,CAAC;IAMD,KAAK,CAAC,GAAG,CACP,OAAyD;QAEzD,IAAI,gBAAgB,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,CAAC;QAChD,IAAI,OAAiB,CAAC;QACtB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YACzD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SACrD;aAAM,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7D,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;YACF,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SACrD;aAAM;YACL,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;gBACxC,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAC;aACvC;YACD,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,gBAAiB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3C,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACvB;YACH,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,MAAM,GAAmB,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;YACzB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;YACnE,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,MAAM,gBAAgB,CAAC,IAAI,CACzB,IAAA,8BAAe,EAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,EAC3C,MAAM,CAAC,MAAM,CAAC,IAAA,kBAAS,EAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,EAAE,EAAC,eAAe,EAAE,GAAG,EAAC,CAAC,CAChE,CACF,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;aAClB;SACF;QACD,iEAAiE;QACjE,MAAM,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,IAAI,uBAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;CACF;AApFD,gEAoFC"}
|