@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 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
 
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  */
11
11
  exports.CountSchema = {
12
12
  type: 'object',
13
- title: 'loopback.count',
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;AAlCD,0DAkCC"}
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
- const keyFrom = sourceModel.getIdProperties()[0];
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, { keyFrom, keyTo: defaultFkName });
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;IAEjD,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,EAAC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAC,CAAC,CAAC;AACtE,CAAC;AA9CD,wDA8CC"}
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
- const keyFrom = sourceModel.getIdProperties()[0];
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;IAEjD,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;AA9CD,sDA8CC"}
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;AA4FD,6EAA6E;AAC7E,6CAAyC;AAAjC,2BAAA,MAAM,CAAA"}
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
- throw new Error(`Navigational properties are not allowed in model data (model "${this.entityClass.modelName}" property "${relName}")`);
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":"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"}
1
+ {"version":3,"file":"legacy-juggler-bridge.js","sourceRoot":"","sources":["../../src/repositories/legacy-juggler-bridge.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,10 @@ export interface Transaction {
10
10
  * Rollback the transaction
11
11
  */
12
12
  rollback(): Promise<void>;
13
+ /**
14
+ * Check if the transaction has an active connection
15
+ */
16
+ isActive(): boolean;
13
17
  /**
14
18
  * The transaction Identifier
15
19
  */
@@ -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;;AAsBhE;;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"}
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.16.0",
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.0.0",
22
- "@loopback/eslint-config": "^5.0.0",
23
- "@loopback/testlab": "^1.10.0",
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.6",
27
- "bson": "4.0.2"
26
+ "@types/node": "^10.17.14",
27
+ "bson": "4.0.3"
28
28
  },
29
29
  "dependencies": {
30
- "@loopback/context": "^1.25.0",
31
- "@loopback/core": "^1.12.0",
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.17.0"
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": "89eb61bacaed75e6eb61ae6840cea266cb888659"
50
+ "gitHead": "6eea5e428b145cafb84a998bd53979da8c8fba07"
51
51
  }
@@ -100,7 +100,7 @@ export interface Count {
100
100
  */
101
101
  export const CountSchema = {
102
102
  type: 'object',
103
- title: 'loopback.count',
103
+ title: 'loopback.Count',
104
104
  properties: {count: {type: 'number'}},
105
105
  };
106
106
 
@@ -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
- const keyFrom = sourceModel.getIdProperties()[0];
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, {keyFrom, keyTo: defaultFkName});
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
- const keyFrom = sourceModel.getIdProperties()[0];
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}" property "${relName}")`,
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
  }
@@ -17,6 +17,11 @@ export interface Transaction {
17
17
  */
18
18
  rollback(): Promise<void>;
19
19
 
20
+ /**
21
+ * Check if the transaction has an active connection
22
+ */
23
+ isActive(): boolean;
24
+
20
25
  /**
21
26
  * The transaction Identifier
22
27
  */