@loopback/repository 1.16.0 → 1.19.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/CHANGELOG.md +52 -0
- package/dist/common-types.js +1 -1
- package/dist/relations/belongs-to/belongs-to-accessor.js +6 -0
- package/dist/relations/belongs-to/belongs-to-accessor.js.map +1 -1
- package/dist/relations/has-many/has-many-through.repository.d.ts +66 -0
- package/dist/relations/has-many/has-many-through.repository.js +7 -0
- package/dist/relations/has-many/has-many-through.repository.js.map +1 -0
- package/dist/relations/has-many/has-many.helpers.js +13 -2
- package/dist/relations/has-many/has-many.helpers.js.map +1 -1
- package/dist/relations/has-one/has-one.helpers.js +9 -1
- package/dist/relations/has-one/has-one.helpers.js.map +1 -1
- package/dist/relations/relation.types.d.ts +50 -3
- package/dist/relations/relation.types.js.map +1 -1
- package/dist/repositories/legacy-juggler-bridge.js +10 -3
- package/dist/repositories/legacy-juggler-bridge.js.map +1 -1
- package/dist/transaction.d.ts +4 -0
- package/dist/transaction.js.map +1 -1
- package/package.json +10 -10
- package/src/common-types.ts +1 -1
- package/src/relations/belongs-to/belongs-to-accessor.ts +6 -0
- package/src/relations/has-many/has-many-through.repository.ts +100 -0
- package/src/relations/has-many/has-many.helpers.ts +14 -3
- package/src/relations/has-one/has-one.helpers.ts +10 -1
- package/src/relations/relation.types.ts +56 -2
- package/src/repositories/legacy-juggler-bridge.ts +10 -4
- package/src/transaction.ts +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,58 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.19.1](https://github.com/strongloop/loopback-next/compare/@loopback/repository@1.19.0...@loopback/repository@1.19.1) (2020-02-06)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @loopback/repository
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [1.19.0](https://github.com/strongloop/loopback-next/compare/@loopback/repository@1.18.0...@loopback/repository@1.19.0) (2020-02-05)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* leverage isactive for transaction ([fc94437](https://github.com/strongloop/loopback-next/commit/fc9443787039d4a1db3008a0141f5693f95bfbd4))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# [1.18.0](https://github.com/strongloop/loopback-next/compare/@loopback/repository@1.17.0...@loopback/repository@1.18.0) (2020-01-27)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* **repository:** make the navigational property err msg more clear ([2d493bc](https://github.com/strongloop/loopback-next/commit/2d493bc0387b9f595b82ee149fb83405f4073424))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Features
|
|
34
|
+
|
|
35
|
+
* **repository:** add interface for hasManyThrough repository ([a242785](https://github.com/strongloop/loopback-next/commit/a24278522c46337887592e864031de891d08f30d)), closes [/github.com/strongloop/loopback-next/pull/2359#issuecomment-559719080](https://github.com//github.com/strongloop/loopback-next/pull/2359/issues/issuecomment-559719080)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# [1.17.0](https://github.com/strongloop/loopback-next/compare/@loopback/repository@1.16.0...@loopback/repository@1.17.0) (2020-01-07)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
46
|
+
* **repository:** belongsto accessor should return undefined if foreign key is not included ([cbdba15](https://github.com/strongloop/loopback-next/commit/cbdba1554fe103109a21e20c48cd3a0edcf8fffb))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Features
|
|
50
|
+
|
|
51
|
+
* **repository:** add interface for hasManyThrough ([ced2643](https://github.com/strongloop/loopback-next/commit/ced26437c6fa8bd34fa897325730610ec017bc16))
|
|
52
|
+
* **repository:** allow custom keyFrom for hasmany/hasone ([58efff9](https://github.com/strongloop/loopback-next/commit/58efff9e166fbe1fc820fe6168e18b5c7d9630ce))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
6
58
|
# [1.16.0](https://github.com/strongloop/loopback-next/compare/@loopback/repository@1.15.5...@loopback/repository@1.16.0) (2019-12-09)
|
|
7
59
|
|
|
8
60
|
|
package/dist/common-types.js
CHANGED
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
*/
|
|
11
11
|
exports.CountSchema = {
|
|
12
12
|
type: 'object',
|
|
13
|
-
title: 'loopback.
|
|
13
|
+
title: 'loopback.Count',
|
|
14
14
|
properties: { count: { type: 'number' } },
|
|
15
15
|
};
|
|
16
16
|
//# sourceMappingURL=common-types.js.map
|
|
@@ -23,6 +23,12 @@ function createBelongsToAccessor(belongsToMetadata, targetRepoGetter, sourceRepo
|
|
|
23
23
|
const primaryKey = meta.keyTo;
|
|
24
24
|
const sourceModel = await sourceRepository.findById(sourceId);
|
|
25
25
|
const foreignKeyValue = sourceModel[foreignKey];
|
|
26
|
+
// workaround to check referential integrity.
|
|
27
|
+
// should be removed once the memory connector ref integrity is done
|
|
28
|
+
// GH issue: https://github.com/strongloop/loopback-next/issues/2333
|
|
29
|
+
if (!foreignKeyValue) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
26
32
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
33
|
const constraint = { [primaryKey]: foreignKeyValue };
|
|
28
34
|
const constrainedRepo = new belongs_to_repository_1.DefaultBelongsToRepository(targetRepoGetter, constraint);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"belongs-to-accessor.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to-accessor.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AASjC,6DAA8D;AAC9D,mFAAiF;AACjF,mEAAmE;AAEnE,MAAM,KAAK,GAAG,eAAY,CAAC,yCAAyC,CAAC,CAAC;AActE;;GAEG;AACH,SAAgB,uBAAuB,CAMrC,iBAAsC,EACtC,gBAAgE,EAChE,gBAAwD;IAExD,MAAM,IAAI,GAAG,6CAAwB,CAAC,iBAAiB,CAAC,CAAC;IACzD,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,MAAM,GAGR,KAAK,UAAU,4BAA4B,CAAC,QAAkB;QAChE,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,8DAA8D;QAC9D,MAAM,UAAU,GAAQ,EAAC,CAAC,UAAU,CAAC,EAAE,eAAe,EAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAI,kDAA0B,CACpD,gBAAgB,EAChB,UAAgC,CACjC,CAAC;QACF,OAAO,eAAe,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,CAAC,iBAAiB,GAAG,gEAAgC,CACzD,IAAI,EACJ,gBAAgB,CACjB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"belongs-to-accessor.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to-accessor.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AASjC,6DAA8D;AAC9D,mFAAiF;AACjF,mEAAmE;AAEnE,MAAM,KAAK,GAAG,eAAY,CAAC,yCAAyC,CAAC,CAAC;AActE;;GAEG;AACH,SAAgB,uBAAuB,CAMrC,iBAAsC,EACtC,gBAAgE,EAChE,gBAAwD;IAExD,MAAM,IAAI,GAAG,6CAAwB,CAAC,iBAAiB,CAAC,CAAC;IACzD,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,MAAM,GAGR,KAAK,UAAU,4BAA4B,CAAC,QAAkB;QAChE,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,OAAQ,SAA+B,CAAC;SACzC;QACD,8DAA8D;QAC9D,MAAM,UAAU,GAAQ,EAAC,CAAC,UAAU,CAAC,EAAE,eAAe,EAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAI,kDAA0B,CACpD,gBAAgB,EAChB,UAAgC,CACjC,CAAC;QACF,OAAO,eAAe,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC;IAEF,MAAM,CAAC,iBAAiB,GAAG,gEAAgC,CACzD,IAAI,EACJ,gBAAgB,CACjB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAxCD,0DAwCC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Count, DataObject, Entity, Filter, Options, Where } from '../..';
|
|
2
|
+
/**
|
|
3
|
+
* CRUD operations for a target repository of a HasManyThrough relation
|
|
4
|
+
*
|
|
5
|
+
* EXPERIMENTAL: This interface is not stable and may change in the near future.
|
|
6
|
+
* Backwards-incompatible changes may be introduced in semver-minor versions.
|
|
7
|
+
*/
|
|
8
|
+
export interface HasManyThroughRepository<Target extends Entity, TargetID, Through extends Entity> {
|
|
9
|
+
/**
|
|
10
|
+
* Create a target model instance
|
|
11
|
+
* @param targetModelData - The target model data
|
|
12
|
+
* @param options - Options for the operation
|
|
13
|
+
* @returns A promise which resolves to the newly created target model instance
|
|
14
|
+
*/
|
|
15
|
+
create(targetModelData: DataObject<Target>, options?: Options & {
|
|
16
|
+
throughData?: DataObject<Through>;
|
|
17
|
+
throughOptions?: Options;
|
|
18
|
+
}): Promise<Target>;
|
|
19
|
+
/**
|
|
20
|
+
* Find target model instance(s)
|
|
21
|
+
* @param filter - A filter object for where, order, limit, etc.
|
|
22
|
+
* @param options - Options for the operation
|
|
23
|
+
* @returns A promise which resolves with the found target instance(s)
|
|
24
|
+
*/
|
|
25
|
+
find(filter?: Filter<Target>, options?: Options & {
|
|
26
|
+
throughOptions?: Options;
|
|
27
|
+
}): Promise<Target[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Delete multiple target model instances
|
|
30
|
+
* @param where - Instances within the where scope are deleted
|
|
31
|
+
* @param options
|
|
32
|
+
* @returns A promise which resolves the deleted target model instances
|
|
33
|
+
*/
|
|
34
|
+
delete(where?: Where<Target>, options?: Options & {
|
|
35
|
+
throughOptions?: Options;
|
|
36
|
+
}): Promise<Count>;
|
|
37
|
+
/**
|
|
38
|
+
* Patch multiple target model instances
|
|
39
|
+
* @param dataObject - The fields and their new values to patch
|
|
40
|
+
* @param where - Instances within the where scope are patched
|
|
41
|
+
* @param options
|
|
42
|
+
* @returns A promise which resolves the patched target model instances
|
|
43
|
+
*/
|
|
44
|
+
patch(dataObject: DataObject<Target>, where?: Where<Target>, options?: Options & {
|
|
45
|
+
throughOptions?: Options;
|
|
46
|
+
}): Promise<Count>;
|
|
47
|
+
/**
|
|
48
|
+
* Creates a new many-to-many association to an existing target model instance
|
|
49
|
+
* @param targetModelId - The target model ID to link
|
|
50
|
+
* @param options
|
|
51
|
+
* @returns A promise which resolves to the linked target model instance
|
|
52
|
+
*/
|
|
53
|
+
link(targetModelId: TargetID, options?: Options & {
|
|
54
|
+
throughData?: DataObject<Through>;
|
|
55
|
+
throughOptions?: Options;
|
|
56
|
+
}): Promise<Target>;
|
|
57
|
+
/**
|
|
58
|
+
* Removes an association to an existing target model instance
|
|
59
|
+
* @param targetModelId - The target model to unlink
|
|
60
|
+
* @param options
|
|
61
|
+
* @returns A promise which resolves to null
|
|
62
|
+
*/
|
|
63
|
+
unlink(targetModelId: TargetID, options?: Options & {
|
|
64
|
+
throughOptions?: Options;
|
|
65
|
+
}): Promise<void>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright IBM Corp. 2020. All Rights Reserved.
|
|
3
|
+
// Node module: @loopback/repository
|
|
4
|
+
// This file is licensed under the MIT License.
|
|
5
|
+
// License text available at https://opensource.org/licenses/MIT
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
//# sourceMappingURL=has-many-through.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-many-through.repository.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-through.repository.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE"}
|
|
@@ -36,7 +36,15 @@ function resolveHasManyMetadata(relationMeta) {
|
|
|
36
36
|
const reason = 'source model must be defined';
|
|
37
37
|
throw new errors_1.InvalidRelationError(reason, relationMeta);
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
// keyFrom defaults to id property
|
|
40
|
+
let keyFrom;
|
|
41
|
+
if (relationMeta.keyFrom &&
|
|
42
|
+
relationMeta.source.definition.properties[relationMeta.keyFrom]) {
|
|
43
|
+
keyFrom = relationMeta.keyFrom;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
keyFrom = sourceModel.getIdProperties()[0];
|
|
47
|
+
}
|
|
40
48
|
// Make sure that if it already keys to the foreign key property,
|
|
41
49
|
// the key exists in the target model
|
|
42
50
|
if (relationMeta.keyTo && targetModelProperties[relationMeta.keyTo]) {
|
|
@@ -50,7 +58,10 @@ function resolveHasManyMetadata(relationMeta) {
|
|
|
50
58
|
const reason = `target model ${targetModel.name} is missing definition of foreign key ${defaultFkName}`;
|
|
51
59
|
throw new errors_1.InvalidRelationError(reason, relationMeta);
|
|
52
60
|
}
|
|
53
|
-
return Object.assign(relationMeta, {
|
|
61
|
+
return Object.assign(relationMeta, {
|
|
62
|
+
keyFrom,
|
|
63
|
+
keyTo: defaultFkName,
|
|
64
|
+
});
|
|
54
65
|
}
|
|
55
66
|
exports.resolveHasManyMetadata = resolveHasManyMetadata;
|
|
56
67
|
//# sourceMappingURL=has-many.helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-many.helpers.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many.helpers.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AACjC,mCAAiC;AACjC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAkE;AAElE,MAAM,KAAK,GAAG,eAAY,CAAC,sCAAsC,CAAC,CAAC;AAWnE;;;;;;GAMG;AACH,SAAgB,sBAAsB,CACpC,YAA+B;IAE/B,IAAK,YAAY,CAAC,IAAqB,KAAK,6BAAY,CAAC,OAAO,EAAE;QAChE,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAC/C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,IAAI,CAAC,8BAAc,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GACzB,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;IAE9D,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;IACxC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC1C,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"has-many.helpers.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many.helpers.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AACjC,mCAAiC;AACjC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAkE;AAElE,MAAM,KAAK,GAAG,eAAY,CAAC,sCAAsC,CAAC,CAAC;AAWnE;;;;;;GAMG;AACH,SAAgB,sBAAsB,CACpC,YAA+B;IAE/B,IAAK,YAAY,CAAC,IAAqB,KAAK,6BAAY,CAAC,OAAO,EAAE;QAChE,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAC/C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,IAAI,CAAC,8BAAc,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GACzB,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;IAE9D,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;IACxC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC1C,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,kCAAkC;IAClC,IAAI,OAAO,CAAC;IACZ,IACE,YAAY,CAAC,OAAO;QACpB,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAC/D;QACA,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;KAChC;SAAM;QACL,OAAO,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5C;IACD,iEAAiE;IACjE,qCAAqC;IACrC,IAAI,YAAY,CAAC,KAAK,IAAI,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QACnE,wEAAwE;QACxE,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAC,OAAO,EAAC,CAA8B,CAAC;KAC5E;IAED,KAAK,CACH,2CAA2C,EAC3C,WAAW,CAAC,SAAS,EACrB,WAAW,CACZ,CAAC;IACF,MAAM,aAAa,GAAG,kBAAS,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IAC/D,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAElE,IAAI,CAAC,oBAAoB,EAAE;QACzB,MAAM,MAAM,GAAG,gBAAgB,WAAW,CAAC,IAAI,yCAAyC,aAAa,EAAE,CAAC;QACxG,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;QACjC,OAAO;QACP,KAAK,EAAE,aAAa;KACQ,CAAC,CAAC;AAClC,CAAC;AAzDD,wDAyDC"}
|
|
@@ -36,7 +36,15 @@ function resolveHasOneMetadata(relationMeta) {
|
|
|
36
36
|
const reason = 'source model must be defined';
|
|
37
37
|
throw new errors_1.InvalidRelationError(reason, relationMeta);
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
// keyFrom defaults to id property
|
|
40
|
+
let keyFrom;
|
|
41
|
+
if (relationMeta.keyFrom &&
|
|
42
|
+
relationMeta.source.definition.properties[relationMeta.keyFrom]) {
|
|
43
|
+
keyFrom = relationMeta.keyFrom;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
keyFrom = sourceModel.getIdProperties()[0];
|
|
47
|
+
}
|
|
40
48
|
// Make sure that if it already keys to the foreign key property,
|
|
41
49
|
// the key exists in the target model
|
|
42
50
|
if (relationMeta.keyTo && targetModelProperties[relationMeta.keyTo]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-one.helpers.js","sourceRoot":"","sources":["../../../src/relations/has-one/has-one.helpers.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AACjC,mCAAiC;AACjC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAiE;AAEjE,MAAM,KAAK,GAAG,eAAY,CAAC,qCAAqC,CAAC,CAAC;AAWlE;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACnC,YAA8B;IAE9B,IAAK,YAAY,CAAC,IAAqB,KAAK,6BAAY,CAAC,MAAM,EAAE;QAC/D,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,IAAI,CAAC,8BAAc,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GACzB,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;IAE9D,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;IACxC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC1C,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"has-one.helpers.js","sourceRoot":"","sources":["../../../src/relations/has-one/has-one.helpers.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AACjC,mCAAiC;AACjC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAiE;AAEjE,MAAM,KAAK,GAAG,eAAY,CAAC,qCAAqC,CAAC,CAAC;AAWlE;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACnC,YAA8B;IAE9B,IAAK,YAAY,CAAC,IAAqB,KAAK,6BAAY,CAAC,MAAM,EAAE;QAC/D,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,IAAI,CAAC,8BAAc,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACxC,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GACzB,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;IAE9D,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;IACxC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;QAC1C,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,kCAAkC;IAClC,IAAI,OAAO,CAAC;IACZ,IACE,YAAY,CAAC,OAAO;QACpB,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAC/D;QACA,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;KAChC;SAAM;QACL,OAAO,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5C;IAED,iEAAiE;IACjE,qCAAqC;IACrC,IAAI,YAAY,CAAC,KAAK,IAAI,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QACnE,wEAAwE;QACxE,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAC,OAAO,EAAC,CAA6B,CAAC;KAC3E;IAED,KAAK,CACH,2CAA2C,EAC3C,WAAW,CAAC,SAAS,EACrB,WAAW,CACZ,CAAC;IACF,MAAM,aAAa,GAAG,kBAAS,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IAC/D,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAElE,IAAI,CAAC,oBAAoB,EAAE;QACzB,MAAM,MAAM,GAAG,gBAAgB,WAAW,CAAC,IAAI,yCAAyC,aAAa,EAAE,CAAC;QACxG,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAC,CAAC,CAAC;AACtE,CAAC;AAvDD,sDAuDC"}
|
|
@@ -44,13 +44,56 @@ export interface HasManyDefinition extends RelationDefinitionBase {
|
|
|
44
44
|
type: RelationType.hasMany;
|
|
45
45
|
targetsMany: true;
|
|
46
46
|
/**
|
|
47
|
-
* The foreign key used by the target model.
|
|
47
|
+
* keyTo: The foreign key used by the target model for this relation.
|
|
48
|
+
* keyFrom: The source key used by the source model for this relation.
|
|
48
49
|
*
|
|
49
50
|
* E.g. when a Customer has many Order instances, then keyTo is "customerId".
|
|
50
51
|
* Note that "customerId" is the default FK assumed by the framework, users
|
|
51
52
|
* can provide a custom FK name by setting "keyTo".
|
|
53
|
+
* And Customer.id is keyFrom. keyFrom defaults to the id property of a model.
|
|
54
|
+
* Users can provide a custom source key name by setting "keyTo".
|
|
55
|
+
*
|
|
52
56
|
*/
|
|
53
57
|
keyTo?: string;
|
|
58
|
+
keyFrom?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A `hasManyThrough` relation defines a many-to-many connection with another model.
|
|
62
|
+
* This relation indicates that the declaring model can be matched with zero or more
|
|
63
|
+
* instances of another model by proceeding through a third model.
|
|
64
|
+
*
|
|
65
|
+
* Warning: The hasManyThrough interface is experimental and is subject to change.
|
|
66
|
+
* If backwards-incompatible changes are made, a new major version may not be
|
|
67
|
+
* released.
|
|
68
|
+
*/
|
|
69
|
+
export interface HasManyThroughDefinition extends RelationDefinitionBase {
|
|
70
|
+
type: RelationType.hasMany;
|
|
71
|
+
targetsMany: true;
|
|
72
|
+
/**
|
|
73
|
+
* The foreign key in the source model, e.g. Customer#id.
|
|
74
|
+
*/
|
|
75
|
+
keyFrom: string;
|
|
76
|
+
/**
|
|
77
|
+
* The primary key of the target model, e.g Seller#id.
|
|
78
|
+
*/
|
|
79
|
+
keyTo: string;
|
|
80
|
+
through: {
|
|
81
|
+
/**
|
|
82
|
+
* The through model of this relation.
|
|
83
|
+
*
|
|
84
|
+
* E.g. when a Customer has many Order instances and a Seller has many Order instances,
|
|
85
|
+
* then Order is through.
|
|
86
|
+
*/
|
|
87
|
+
model: TypeResolver<Entity, typeof Entity>;
|
|
88
|
+
/**
|
|
89
|
+
* The foreign key of the source model defined in the through model, e.g. Order#customerId
|
|
90
|
+
*/
|
|
91
|
+
keyFrom: string;
|
|
92
|
+
/**
|
|
93
|
+
* The foreign key of the target model defined in the through model, e.g. Order#sellerId
|
|
94
|
+
*/
|
|
95
|
+
keyTo: string;
|
|
96
|
+
};
|
|
54
97
|
}
|
|
55
98
|
export interface BelongsToDefinition extends RelationDefinitionBase {
|
|
56
99
|
type: RelationType.belongsTo;
|
|
@@ -62,18 +105,22 @@ export interface HasOneDefinition extends RelationDefinitionBase {
|
|
|
62
105
|
type: RelationType.hasOne;
|
|
63
106
|
targetsMany: false;
|
|
64
107
|
/**
|
|
65
|
-
* The foreign key used by the target model.
|
|
108
|
+
* keyTo: The foreign key used by the target model for this relation.
|
|
109
|
+
* keyFrom: The source key used by the source model for this relation.
|
|
66
110
|
*
|
|
67
111
|
* E.g. when a Customer has one Address instance, then keyTo is "customerId".
|
|
68
112
|
* Note that "customerId" is the default FK assumed by the framework, users
|
|
69
113
|
* can provide a custom FK name by setting "keyTo".
|
|
114
|
+
* And Customer.id is keyFrom. keyFrom defaults to the id property of a model.
|
|
115
|
+
* Users can provide a custom source key name by setting "keyTo".
|
|
70
116
|
*/
|
|
71
117
|
keyTo?: string;
|
|
118
|
+
keyFrom?: string;
|
|
72
119
|
}
|
|
73
120
|
/**
|
|
74
121
|
* A union type describing all possible Relation metadata objects.
|
|
75
122
|
*/
|
|
76
|
-
export declare type RelationMetadata = HasManyDefinition | BelongsToDefinition | HasOneDefinition | RelationDefinitionBase;
|
|
123
|
+
export declare type RelationMetadata = HasManyDefinition | HasManyThroughDefinition | BelongsToDefinition | HasOneDefinition | RelationDefinitionBase;
|
|
77
124
|
export { Getter } from '@loopback/context';
|
|
78
125
|
/**
|
|
79
126
|
* @returns An array of resolved values, the items must be ordered in the same
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.types.js","sourceRoot":"","sources":["../../src/relations/relation.types.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AAOhE,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,+CAA+B,CAAA;IAC/B,iDAAiC,CAAA;AACnC,CAAC,EARW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAQvB;
|
|
1
|
+
{"version":3,"file":"relation.types.js","sourceRoot":"","sources":["../../src/relations/relation.types.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AAOhE,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,+CAA+B,CAAA;IAC/B,iDAAiC,CAAA;AACnC,CAAC,EARW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAQvB;AAkJD,6EAA6E;AAC7E,6CAAyC;AAAjC,2BAAA,MAAM,CAAA"}
|
|
@@ -372,14 +372,21 @@ class DefaultCrudRepository {
|
|
|
372
372
|
const data: AnyObject =
|
|
373
373
|
typeof entity.toJSON === 'function' ? entity.toJSON() : {...entity};
|
|
374
374
|
*/
|
|
375
|
-
// proposal solution from agnes: delete the id property in the
|
|
376
|
-
// target data when runs replaceById
|
|
377
375
|
const data = new this.entityClass(entity);
|
|
378
376
|
const def = this.entityClass.definition;
|
|
377
|
+
const props = def.properties;
|
|
379
378
|
for (const r in def.relations) {
|
|
380
379
|
const relName = def.relations[r].name;
|
|
381
380
|
if (relName in data) {
|
|
382
|
-
|
|
381
|
+
let invalidNameMsg = '';
|
|
382
|
+
if (relName in props) {
|
|
383
|
+
invalidNameMsg =
|
|
384
|
+
` The error might be invoked by belongsTo relations, please make sure the relation name is not the same as` +
|
|
385
|
+
` the property name.`;
|
|
386
|
+
}
|
|
387
|
+
throw new Error(`Navigational properties are not allowed in model data (model "${this.entityClass.modelName}"` +
|
|
388
|
+
` property "${relName}"), please remove it.` +
|
|
389
|
+
invalidNameMsg);
|
|
383
390
|
}
|
|
384
391
|
}
|
|
385
392
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-juggler-bridge.js","sourceRoot":"","sources":["../../src/repositories/legacy-juggler-bridge.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAGhE,oDAA4B;AAC5B,8FAAiD;AAUjD,sCAA8C;AAG9C,4CAYsB;AAEtB,oDAA6D;AAM7D,IAAiB,OAAO,CAYvB;AAZD,WAAiB,OAAO;IACtB,sDAAsD;IACxC,kBAAU,GAAG,qCAAM,CAAC,UAAU,CAAC;IAC/B,iBAAS,GAAG,qCAAM,CAAC,SAAS,CAAC;IAE7B,sBAAc,GAAG,qCAAM,CAAC,cAAc,CAAC;IACvC,qBAAa,GAAG,qCAAM,CAAC,aAAa,CAAC;IAInD,qCAAqC;IACvB,sBAAc,GAAG,qCAAM,CAAC,cAAc,CAAC;AACvD,CAAC,EAZgB,OAAO,GAAP,eAAO,KAAP,eAAO,QAYvB;AAED,SAAS,YAAY,CACnB,YAAsC;IAEtC,OAAO,CACL,CAAC,8BAAc,CAAC,YAAY,CAAC;QAC7B,OAAO,YAAY,KAAK,UAAU;QAClC,OAAQ,YAA6B,CAAC,UAAU,KAAK,QAAQ;QAC7D,YAAY,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CACvB,UAAa,EACb,EAAsB;IAEtB,MAAM,eAAe,GAAG,KAAM,SAAQ,UAAU;KAAG,CAAC;IACpD,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7B,OAAO,eAAe,CAAC;AACzB,CAAC;AAPD,8BAOC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAI,CAA0B;IACzD,IAAI,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE;QAC7B,OAAO,CAAC,CAAC;KACV;SAAM;QACL,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,GAAG,CAAC,CAAC,CAAC,CAAC;KACzE;AACH,CAAC;AAND,sCAMC;AAED;;;GAGG;AACH,MAAa,qBAAqB;IAYhC;;;;OAIG;IACH;IACE,2EAA2E;IACpE,WAA2C,EAC3C,UAA8B;QAD9B,gBAAW,GAAX,WAAW,CAAgC;QAC3C,eAAU,GAAV,UAAU,CAAoB;QAbvB,uBAAkB,GAG9B,IAAI,GAAG,EAAE,CAAC;QAYZ,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;QAC1C,gBAAM,CACJ,CAAC,CAAC,UAAU,EACZ,UAAU,WAAW,CAAC,IAAI,oCAAoC,CAC/D,CAAC;QACF,gBAAM,CACJ,UAAU,CAAC,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,EACpC,UAAU,WAAW,CAAC,IAAI,yCAAyC,CACpE,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,6DAA6D;IACrD,oBAAoB,CAC1B,WAAyB;QAEzB,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;QAC1C,gBAAM,CACJ,CAAC,CAAC,UAAU,EACZ,UAAU,WAAW,CAAC,IAAI,oCAAoC,CAC/D,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE;YACT,wDAAwD;YACxD,OAAO,KAAsC,CAAC;SAC/C;QAED,uDAAuD;QACvD,wEAAwE;QACxE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE7D,kEAAkE;QAClE,uDAAuD;QACvD,MAAM,UAAU,GAA6B,EAAE,CAAC;QAEhD,iEAAiE;QACjE,0BAA0B;QAC1B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7D,4EAA4E;YAC5E,yEAAyE;YACzE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;gBAClD,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;oBAC/B,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;iBACnE,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC,QAAQ,CAAC;aACvB;iBAAM;gBACL,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE;oBAC/B,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;iBAC3C,CAAC,CAAC;aACJ;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CACvC,UAAU,CAAC,IAAI,EACf,UAAU,EACV,MAAM,CAAC,MAAM;QACX,mCAAmC;QACnC,EAAC,MAAM,EAAE,IAAI,EAAC;QACd,wBAAwB;QACxB,UAAU,CAAC,QAAQ;QACnB,qCAAqC;QACrC,EAAC,YAAY,EAAE,KAAK,EAAC,CACtB,CACF,CAAC;QACF,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,mBAAmB,CAAC,IAAkB;QAC5C,MAAM,QAAQ,GAAG,2BAAW,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,YAAY,CAAC,QAAQ,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YACrC,CAAC,CAAC,QAAQ,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACO,kCAAkC,CAK1C,YAAoB,EACpB,gBAAgE;QAEhE,OAAO,IAAI,CAAC,iCAAiC,CAC3C,YAAY,EACZ,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACO,iCAAiC,CAKzC,YAAoB,EACpB,gBAAgE;QAEhE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACjE,OAAO,0CAA8B,CACnC,IAAyB,EACzB,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACO,2BAA2B,CACnC,YAAoB,EACpB,gBAAgE;QAEhE,OAAO,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACO,0BAA0B,CAClC,YAAoB,EACpB,gBAAgE;QAEhE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACjE,OAAO,mCAAuB,CAC5B,IAA2B,EAC3B,gBAAgB,EAChB,IAAI,CACL,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACO,iCAAiC,CAKzC,YAAoB,EACpB,gBAAgE;QAEhE,OAAO,IAAI,CAAC,gCAAgC,CAC1C,YAAY,EACZ,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACO,gCAAgC,CAKxC,YAAoB,EACpB,gBAAgE;QAEhE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACjE,OAAO,yCAA6B,CAClC,IAAwB,EACxB,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAqB,EAAE,OAAiB;QACnD,uBAAuB;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAyB,EAAE,OAAiB;QAC1D,uBAAuB;QACvB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CACjD,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAS,EAAE,OAAiB;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,EAAE,IAAI,IAAI,EAAE;YACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACrC;aAAM;YACL,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAM,CAAC;SACrD;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAAkB,EAClB,OAAiB;;QAEjB,MAAM,OAAO,SAAG,MAAM,0CAAE,OAAO,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAC5D,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,OAAO,CACX,MAAkB,EAClB,OAAiB;;QAEjB,MAAM,KAAK,GAAG,MAAM,aAAa,CAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAC/D,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,OAAO,SAAG,MAAM,0CAAE,OAAO,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC9C,CAAC,MAAM,CAAC,EACR,OAAO,EACP,OAAO,CACR,CAAC;QACF,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,EAAM,EACN,MAAkB,EAClB,OAAiB;;QAEjB,MAAM,OAAO,SAAG,MAAM,0CAAE,OAAO,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,aAAa,CAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CACpE,CAAC;QACF,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,4BAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACrD;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAC9C,CAAC,MAAM,CAAC,EACR,OAAO,EACP,OAAO,CACR,CAAC;QACF,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,MAAS,EAAE,OAAiB;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAS,EAAE,OAAiB;QACvC,uBAAuB;QACvB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,SAAS,CACb,IAAmB,EACnB,KAAgB,EAChB,OAAiB;QAEjB,KAAK,IAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAA,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CACzD,CAAC;QACF,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CACd,EAAM,EACN,IAAmB,EACnB,OAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,EAAc,CAAC;QAC5B,KAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,4BAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACrD;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CACf,EAAM,EACN,IAAmB,EACnB,OAAiB;QAEjB,IAAI;YACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;SACxE;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;gBAC1B,MAAM,IAAI,4BAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;aACrD;YACD,MAAM,GAAG,CAAC;SACX;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAgB,EAAE,OAAiB;QACjD,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAC1C,CAAC;QACF,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAM,EAAE,OAAiB;QACxC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,4BAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACrD;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAgB,EAAE,OAAiB;QAC7C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,EAAM,EAAE,OAAiB;QAC9B,OAAO,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAAgB,EAChB,UAAkD,EAClD,OAAiB;QAEjB,OAAO,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IAES,QAAQ,CAAc,KAA6B;QAC3D,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAM,CAAC;IACrD,CAAC;IAES,UAAU,CAAc,MAAgC;QAChE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,yBAAyB,CACvB,YAAoB,EACpB,QAAsC;QAEtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACO,KAAK,CAAC,oBAAoB,CAClC,QAAa,EACb,OAAwB,EACxB,OAAiB;QAEjB,OAAO,gCAAoB,CAAe,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;;;;;OAUG;IACO,KAAK,CAAC,YAAY,CAC1B,MAAyB,EACzB,OAAO,GAAG,EAAE;QAEZ,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACO,iBAAiB,CACzB,MAAyB,EACzB,OAAO,GAAG,EAAE;QAEZ,6EAA6E;QAC7E,wEAAwE;QACxE,oEAAoE;QACpE,qCAAqC;QACrC;;;UAGE;QAEF,8DAA8D;QAC9D,oCAAoC;QAEpC,MAAM,IAAI,GAAc,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE;YAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtC,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,MAAM,IAAI,KAAK,CACb,iEAAiE,IAAI,CAAC,WAAW,CAAC,SAAS,eAAe,OAAO,IAAI,CACtH,CAAC;aACH;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACO,eAAe,CAAC,MAAkB;QAC1C,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,OAAO,gCAAI,MAAM,KAAE,OAAO,EAAE,SAAS,GAAkB,CAAC;IAC1D,CAAC;CACF;AAzfD,sDAyfC;AAED;;;;GAIG;AAEH,MAAa,8BAIX,SAAQ,qBAAuC;IAE/C,KAAK,CAAC,gBAAgB,CACpB,OAAkC;QAElC,MAAM,SAAS,IAAqC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAA,CAAC;QAClE,qEAAqE;QACrE,sBAAsB;QACtB,6BAA6B;QAC7B,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAgB,CAAC;IAC5E,CAAC;CACF;AAfD,wEAeC"}
|
|
1
|
+
{"version":3,"file":"legacy-juggler-bridge.js","sourceRoot":"","sources":["../../src/repositories/legacy-juggler-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/transaction.d.ts
CHANGED
package/dist/transaction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AA2BhE;;GAEG;AACH,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,mDAAiC,CAAA;IACjC,uDAAqC,CAAA;IACrC,+CAA6B,CAAA;IAC7B,qDAAmC,CAAA;AACrC,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loopback/repository",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.19.1",
|
|
4
4
|
"description": "Repository based persistence for LoopBack 4",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=8.9"
|
|
@@ -18,21 +18,21 @@
|
|
|
18
18
|
"copyright.owner": "IBM Corp.",
|
|
19
19
|
"license": "MIT",
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@loopback/build": "^3.
|
|
22
|
-
"@loopback/eslint-config": "^5.0.
|
|
23
|
-
"@loopback/testlab": "^1.10.
|
|
21
|
+
"@loopback/build": "^3.1.1",
|
|
22
|
+
"@loopback/eslint-config": "^5.0.3",
|
|
23
|
+
"@loopback/testlab": "^1.10.3",
|
|
24
24
|
"@types/bson": "^4.0.1",
|
|
25
25
|
"@types/lodash": "^4.14.149",
|
|
26
|
-
"@types/node": "^10.17.
|
|
27
|
-
"bson": "4.0.
|
|
26
|
+
"@types/node": "^10.17.14",
|
|
27
|
+
"bson": "4.0.3"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@loopback/context": "^1.
|
|
31
|
-
"@loopback/core": "^1.12.
|
|
30
|
+
"@loopback/context": "^2.1.1",
|
|
31
|
+
"@loopback/core": "^1.12.4",
|
|
32
32
|
"@types/debug": "^4.1.5",
|
|
33
33
|
"debug": "^4.1.1",
|
|
34
34
|
"lodash": "^4.17.15",
|
|
35
|
-
"loopback-datasource-juggler": "^4.
|
|
35
|
+
"loopback-datasource-juggler": "^4.18.1"
|
|
36
36
|
},
|
|
37
37
|
"files": [
|
|
38
38
|
"README.md",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"url": "https://github.com/strongloop/loopback-next.git",
|
|
48
48
|
"directory": "packages/repository"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "6eea5e428b145cafb84a998bd53979da8c8fba07"
|
|
51
51
|
}
|
package/src/common-types.ts
CHANGED
|
@@ -53,6 +53,12 @@ export function createBelongsToAccessor<
|
|
|
53
53
|
const primaryKey = meta.keyTo;
|
|
54
54
|
const sourceModel = await sourceRepository.findById(sourceId);
|
|
55
55
|
const foreignKeyValue = sourceModel[foreignKey as keyof Source];
|
|
56
|
+
// workaround to check referential integrity.
|
|
57
|
+
// should be removed once the memory connector ref integrity is done
|
|
58
|
+
// GH issue: https://github.com/strongloop/loopback-next/issues/2333
|
|
59
|
+
if (!foreignKeyValue) {
|
|
60
|
+
return (undefined as unknown) as Target;
|
|
61
|
+
}
|
|
56
62
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
63
|
const constraint: any = {[primaryKey]: foreignKeyValue};
|
|
58
64
|
const constrainedRepo = new DefaultBelongsToRepository(
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Copyright IBM Corp. 2020. All Rights Reserved.
|
|
2
|
+
// Node module: @loopback/repository
|
|
3
|
+
// This file is licensed under the MIT License.
|
|
4
|
+
// License text available at https://opensource.org/licenses/MIT
|
|
5
|
+
|
|
6
|
+
import {Count, DataObject, Entity, Filter, Options, Where} from '../..';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* CRUD operations for a target repository of a HasManyThrough relation
|
|
10
|
+
*
|
|
11
|
+
* EXPERIMENTAL: This interface is not stable and may change in the near future.
|
|
12
|
+
* Backwards-incompatible changes may be introduced in semver-minor versions.
|
|
13
|
+
*/
|
|
14
|
+
export interface HasManyThroughRepository<
|
|
15
|
+
Target extends Entity,
|
|
16
|
+
TargetID,
|
|
17
|
+
Through extends Entity
|
|
18
|
+
> {
|
|
19
|
+
/**
|
|
20
|
+
* Create a target model instance
|
|
21
|
+
* @param targetModelData - The target model data
|
|
22
|
+
* @param options - Options for the operation
|
|
23
|
+
* @returns A promise which resolves to the newly created target model instance
|
|
24
|
+
*/
|
|
25
|
+
create(
|
|
26
|
+
targetModelData: DataObject<Target>,
|
|
27
|
+
options?: Options & {
|
|
28
|
+
throughData?: DataObject<Through>;
|
|
29
|
+
throughOptions?: Options;
|
|
30
|
+
},
|
|
31
|
+
): Promise<Target>;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Find target model instance(s)
|
|
35
|
+
* @param filter - A filter object for where, order, limit, etc.
|
|
36
|
+
* @param options - Options for the operation
|
|
37
|
+
* @returns A promise which resolves with the found target instance(s)
|
|
38
|
+
*/
|
|
39
|
+
find(
|
|
40
|
+
filter?: Filter<Target>,
|
|
41
|
+
options?: Options & {
|
|
42
|
+
throughOptions?: Options;
|
|
43
|
+
},
|
|
44
|
+
): Promise<Target[]>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Delete multiple target model instances
|
|
48
|
+
* @param where - Instances within the where scope are deleted
|
|
49
|
+
* @param options
|
|
50
|
+
* @returns A promise which resolves the deleted target model instances
|
|
51
|
+
*/
|
|
52
|
+
delete(
|
|
53
|
+
where?: Where<Target>,
|
|
54
|
+
options?: Options & {
|
|
55
|
+
throughOptions?: Options;
|
|
56
|
+
},
|
|
57
|
+
): Promise<Count>;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Patch multiple target model instances
|
|
61
|
+
* @param dataObject - The fields and their new values to patch
|
|
62
|
+
* @param where - Instances within the where scope are patched
|
|
63
|
+
* @param options
|
|
64
|
+
* @returns A promise which resolves the patched target model instances
|
|
65
|
+
*/
|
|
66
|
+
patch(
|
|
67
|
+
dataObject: DataObject<Target>,
|
|
68
|
+
where?: Where<Target>,
|
|
69
|
+
options?: Options & {
|
|
70
|
+
throughOptions?: Options;
|
|
71
|
+
},
|
|
72
|
+
): Promise<Count>;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Creates a new many-to-many association to an existing target model instance
|
|
76
|
+
* @param targetModelId - The target model ID to link
|
|
77
|
+
* @param options
|
|
78
|
+
* @returns A promise which resolves to the linked target model instance
|
|
79
|
+
*/
|
|
80
|
+
link(
|
|
81
|
+
targetModelId: TargetID,
|
|
82
|
+
options?: Options & {
|
|
83
|
+
throughData?: DataObject<Through>;
|
|
84
|
+
throughOptions?: Options;
|
|
85
|
+
},
|
|
86
|
+
): Promise<Target>;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Removes an association to an existing target model instance
|
|
90
|
+
* @param targetModelId - The target model to unlink
|
|
91
|
+
* @param options
|
|
92
|
+
* @returns A promise which resolves to null
|
|
93
|
+
*/
|
|
94
|
+
unlink(
|
|
95
|
+
targetModelId: TargetID,
|
|
96
|
+
options?: Options & {
|
|
97
|
+
throughOptions?: Options;
|
|
98
|
+
},
|
|
99
|
+
): Promise<void>;
|
|
100
|
+
}
|
|
@@ -50,8 +50,16 @@ export function resolveHasManyMetadata(
|
|
|
50
50
|
throw new InvalidRelationError(reason, relationMeta);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
// keyFrom defaults to id property
|
|
54
|
+
let keyFrom;
|
|
55
|
+
if (
|
|
56
|
+
relationMeta.keyFrom &&
|
|
57
|
+
relationMeta.source.definition.properties[relationMeta.keyFrom]
|
|
58
|
+
) {
|
|
59
|
+
keyFrom = relationMeta.keyFrom;
|
|
60
|
+
} else {
|
|
61
|
+
keyFrom = sourceModel.getIdProperties()[0];
|
|
62
|
+
}
|
|
55
63
|
// Make sure that if it already keys to the foreign key property,
|
|
56
64
|
// the key exists in the target model
|
|
57
65
|
if (relationMeta.keyTo && targetModelProperties[relationMeta.keyTo]) {
|
|
@@ -72,5 +80,8 @@ export function resolveHasManyMetadata(
|
|
|
72
80
|
throw new InvalidRelationError(reason, relationMeta);
|
|
73
81
|
}
|
|
74
82
|
|
|
75
|
-
return Object.assign(relationMeta, {
|
|
83
|
+
return Object.assign(relationMeta, {
|
|
84
|
+
keyFrom,
|
|
85
|
+
keyTo: defaultFkName,
|
|
86
|
+
} as HasManyResolvedDefinition);
|
|
76
87
|
}
|
|
@@ -50,7 +50,16 @@ export function resolveHasOneMetadata(
|
|
|
50
50
|
throw new InvalidRelationError(reason, relationMeta);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
// keyFrom defaults to id property
|
|
54
|
+
let keyFrom;
|
|
55
|
+
if (
|
|
56
|
+
relationMeta.keyFrom &&
|
|
57
|
+
relationMeta.source.definition.properties[relationMeta.keyFrom]
|
|
58
|
+
) {
|
|
59
|
+
keyFrom = relationMeta.keyFrom;
|
|
60
|
+
} else {
|
|
61
|
+
keyFrom = sourceModel.getIdProperties()[0];
|
|
62
|
+
}
|
|
54
63
|
|
|
55
64
|
// Make sure that if it already keys to the foreign key property,
|
|
56
65
|
// the key exists in the target model
|
|
@@ -59,13 +59,62 @@ export interface HasManyDefinition extends RelationDefinitionBase {
|
|
|
59
59
|
targetsMany: true;
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
|
-
* The foreign key used by the target model.
|
|
62
|
+
* keyTo: The foreign key used by the target model for this relation.
|
|
63
|
+
* keyFrom: The source key used by the source model for this relation.
|
|
63
64
|
*
|
|
64
65
|
* E.g. when a Customer has many Order instances, then keyTo is "customerId".
|
|
65
66
|
* Note that "customerId" is the default FK assumed by the framework, users
|
|
66
67
|
* can provide a custom FK name by setting "keyTo".
|
|
68
|
+
* And Customer.id is keyFrom. keyFrom defaults to the id property of a model.
|
|
69
|
+
* Users can provide a custom source key name by setting "keyTo".
|
|
70
|
+
*
|
|
67
71
|
*/
|
|
68
72
|
keyTo?: string;
|
|
73
|
+
keyFrom?: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* A `hasManyThrough` relation defines a many-to-many connection with another model.
|
|
78
|
+
* This relation indicates that the declaring model can be matched with zero or more
|
|
79
|
+
* instances of another model by proceeding through a third model.
|
|
80
|
+
*
|
|
81
|
+
* Warning: The hasManyThrough interface is experimental and is subject to change.
|
|
82
|
+
* If backwards-incompatible changes are made, a new major version may not be
|
|
83
|
+
* released.
|
|
84
|
+
*/
|
|
85
|
+
export interface HasManyThroughDefinition extends RelationDefinitionBase {
|
|
86
|
+
type: RelationType.hasMany;
|
|
87
|
+
targetsMany: true;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* The foreign key in the source model, e.g. Customer#id.
|
|
91
|
+
*/
|
|
92
|
+
keyFrom: string;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The primary key of the target model, e.g Seller#id.
|
|
96
|
+
*/
|
|
97
|
+
keyTo: string;
|
|
98
|
+
|
|
99
|
+
through: {
|
|
100
|
+
/**
|
|
101
|
+
* The through model of this relation.
|
|
102
|
+
*
|
|
103
|
+
* E.g. when a Customer has many Order instances and a Seller has many Order instances,
|
|
104
|
+
* then Order is through.
|
|
105
|
+
*/
|
|
106
|
+
model: TypeResolver<Entity, typeof Entity>;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* The foreign key of the source model defined in the through model, e.g. Order#customerId
|
|
110
|
+
*/
|
|
111
|
+
keyFrom: string;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* The foreign key of the target model defined in the through model, e.g. Order#sellerId
|
|
115
|
+
*/
|
|
116
|
+
keyTo: string;
|
|
117
|
+
};
|
|
69
118
|
}
|
|
70
119
|
|
|
71
120
|
export interface BelongsToDefinition extends RelationDefinitionBase {
|
|
@@ -88,13 +137,17 @@ export interface HasOneDefinition extends RelationDefinitionBase {
|
|
|
88
137
|
targetsMany: false;
|
|
89
138
|
|
|
90
139
|
/**
|
|
91
|
-
* The foreign key used by the target model.
|
|
140
|
+
* keyTo: The foreign key used by the target model for this relation.
|
|
141
|
+
* keyFrom: The source key used by the source model for this relation.
|
|
92
142
|
*
|
|
93
143
|
* E.g. when a Customer has one Address instance, then keyTo is "customerId".
|
|
94
144
|
* Note that "customerId" is the default FK assumed by the framework, users
|
|
95
145
|
* can provide a custom FK name by setting "keyTo".
|
|
146
|
+
* And Customer.id is keyFrom. keyFrom defaults to the id property of a model.
|
|
147
|
+
* Users can provide a custom source key name by setting "keyTo".
|
|
96
148
|
*/
|
|
97
149
|
keyTo?: string;
|
|
150
|
+
keyFrom?: string;
|
|
98
151
|
}
|
|
99
152
|
|
|
100
153
|
/**
|
|
@@ -102,6 +155,7 @@ export interface HasOneDefinition extends RelationDefinitionBase {
|
|
|
102
155
|
*/
|
|
103
156
|
export type RelationMetadata =
|
|
104
157
|
| HasManyDefinition
|
|
158
|
+
| HasManyThroughDefinition
|
|
105
159
|
| BelongsToDefinition
|
|
106
160
|
| HasOneDefinition
|
|
107
161
|
// TODO(bajtos) add other relation types and remove RelationDefinitionBase once
|
|
@@ -573,17 +573,23 @@ export class DefaultCrudRepository<
|
|
|
573
573
|
typeof entity.toJSON === 'function' ? entity.toJSON() : {...entity};
|
|
574
574
|
*/
|
|
575
575
|
|
|
576
|
-
// proposal solution from agnes: delete the id property in the
|
|
577
|
-
// target data when runs replaceById
|
|
578
|
-
|
|
579
576
|
const data: AnyObject = new this.entityClass(entity);
|
|
580
577
|
|
|
581
578
|
const def = this.entityClass.definition;
|
|
579
|
+
const props = def.properties;
|
|
582
580
|
for (const r in def.relations) {
|
|
583
581
|
const relName = def.relations[r].name;
|
|
584
582
|
if (relName in data) {
|
|
583
|
+
let invalidNameMsg = '';
|
|
584
|
+
if (relName in props) {
|
|
585
|
+
invalidNameMsg =
|
|
586
|
+
` The error might be invoked by belongsTo relations, please make sure the relation name is not the same as` +
|
|
587
|
+
` the property name.`;
|
|
588
|
+
}
|
|
585
589
|
throw new Error(
|
|
586
|
-
`Navigational properties are not allowed in model data (model "${this.entityClass.modelName}"
|
|
590
|
+
`Navigational properties are not allowed in model data (model "${this.entityClass.modelName}"` +
|
|
591
|
+
` property "${relName}"), please remove it.` +
|
|
592
|
+
invalidNameMsg,
|
|
587
593
|
);
|
|
588
594
|
}
|
|
589
595
|
}
|