@loopback/repository 1.15.4 → 1.18.0

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.
Files changed (95) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/common-types.d.ts +10 -1
  3. package/dist/common-types.js +1 -0
  4. package/dist/common-types.js.map +1 -1
  5. package/dist/decorators/model.decorator.js +7 -6
  6. package/dist/decorators/model.decorator.js.map +1 -1
  7. package/dist/decorators/repository.decorator.js +5 -2
  8. package/dist/decorators/repository.decorator.js.map +1 -1
  9. package/dist/define-model-class.d.ts +55 -0
  10. package/dist/define-model-class.js +60 -0
  11. package/dist/define-model-class.js.map +1 -0
  12. package/dist/errors/invalid-relation.error.js +2 -1
  13. package/dist/errors/invalid-relation.error.js.map +1 -1
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.js +1 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/mixins/repository.mixin.js +11 -4
  18. package/dist/mixins/repository.mixin.js.map +1 -1
  19. package/dist/model.js +2 -2
  20. package/dist/model.js.map +1 -1
  21. package/dist/query.js +8 -5
  22. package/dist/query.js.map +1 -1
  23. package/dist/relations/belongs-to/belongs-to-accessor.js +12 -3
  24. package/dist/relations/belongs-to/belongs-to-accessor.js.map +1 -1
  25. package/dist/relations/belongs-to/belongs-to.helpers.js +5 -2
  26. package/dist/relations/belongs-to/belongs-to.helpers.js.map +1 -1
  27. package/dist/relations/has-many/has-many-repository.factory.js +5 -2
  28. package/dist/relations/has-many/has-many-repository.factory.js.map +1 -1
  29. package/dist/relations/has-many/has-many-through.repository.d.ts +66 -0
  30. package/dist/relations/has-many/has-many-through.repository.js +7 -0
  31. package/dist/relations/has-many/has-many-through.repository.js.map +1 -0
  32. package/dist/relations/has-many/has-many.helpers.js +18 -4
  33. package/dist/relations/has-many/has-many.helpers.js.map +1 -1
  34. package/dist/relations/has-many/has-many.inclusion-resolver.js +5 -2
  35. package/dist/relations/has-many/has-many.inclusion-resolver.js.map +1 -1
  36. package/dist/relations/has-one/has-one-repository.factory.js +5 -2
  37. package/dist/relations/has-one/has-one-repository.factory.js.map +1 -1
  38. package/dist/relations/has-one/has-one.helpers.js +14 -3
  39. package/dist/relations/has-one/has-one.helpers.js.map +1 -1
  40. package/dist/relations/relation.decorator.js +2 -1
  41. package/dist/relations/relation.decorator.js.map +1 -1
  42. package/dist/relations/relation.helpers.d.ts +1 -1
  43. package/dist/relations/relation.helpers.js +18 -13
  44. package/dist/relations/relation.helpers.js.map +1 -1
  45. package/dist/relations/relation.types.d.ts +50 -3
  46. package/dist/relations/relation.types.js.map +1 -1
  47. package/dist/repositories/kv.repository.bridge.d.ts +3 -3
  48. package/dist/repositories/kv.repository.bridge.js +1 -1
  49. package/dist/repositories/kv.repository.bridge.js.map +1 -1
  50. package/dist/repositories/legacy-juggler-bridge.d.ts +20 -1
  51. package/dist/repositories/legacy-juggler-bridge.js +82 -20
  52. package/dist/repositories/legacy-juggler-bridge.js.map +1 -1
  53. package/dist/types/array.js +5 -2
  54. package/dist/types/array.js.map +1 -1
  55. package/dist/types/buffer.d.ts +1 -1
  56. package/dist/types/buffer.js +8 -4
  57. package/dist/types/buffer.js.map +1 -1
  58. package/dist/types/date.js +5 -2
  59. package/dist/types/date.js.map +1 -1
  60. package/dist/types/number.js +5 -2
  61. package/dist/types/number.js.map +1 -1
  62. package/dist/types/object.d.ts +1 -1
  63. package/dist/types/object.js +5 -2
  64. package/dist/types/object.js.map +1 -1
  65. package/dist/types/union.js +5 -2
  66. package/dist/types/union.js.map +1 -1
  67. package/package.json +12 -12
  68. package/src/common-types.ts +15 -1
  69. package/src/decorators/model.decorator.ts +5 -5
  70. package/src/decorators/repository.decorator.ts +1 -1
  71. package/src/define-model-class.ts +88 -0
  72. package/src/errors/invalid-relation.error.ts +1 -1
  73. package/src/index.ts +1 -0
  74. package/src/mixins/repository.mixin.ts +7 -3
  75. package/src/model.ts +2 -2
  76. package/src/query.ts +3 -3
  77. package/src/relations/belongs-to/belongs-to-accessor.ts +8 -2
  78. package/src/relations/belongs-to/belongs-to.helpers.ts +1 -1
  79. package/src/relations/has-many/has-many-repository.factory.ts +1 -1
  80. package/src/relations/has-many/has-many-through.repository.ts +100 -0
  81. package/src/relations/has-many/has-many.helpers.ts +15 -4
  82. package/src/relations/has-many/has-many.inclusion-resolver.ts +1 -1
  83. package/src/relations/has-one/has-one-repository.factory.ts +1 -1
  84. package/src/relations/has-one/has-one.helpers.ts +11 -2
  85. package/src/relations/relation.decorator.ts +1 -1
  86. package/src/relations/relation.helpers.ts +13 -12
  87. package/src/relations/relation.types.ts +56 -2
  88. package/src/repositories/kv.repository.bridge.ts +5 -8
  89. package/src/repositories/legacy-juggler-bridge.ts +81 -13
  90. package/src/types/array.ts +1 -1
  91. package/src/types/buffer.ts +4 -4
  92. package/src/types/date.ts +1 -1
  93. package/src/types/number.ts +1 -1
  94. package/src/types/object.ts +2 -2
  95. package/src/types/union.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"belongs-to.helpers.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.helpers.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AAEhE,sCAAsC;AACtC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAoE;AAEpE,MAAM,KAAK,GAAG,YAAY,CAAC,wCAAwC,CAAC,CAAC;AAQrE;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,YAAiC;IACxE,IAAK,YAAY,CAAC,IAAqB,KAAK,6BAAY,CAAC,SAAS,EAAE;QAClE,MAAM,MAAM,GAAG,iCAAiC,CAAC;QACjD,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,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACzB,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACrC,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,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,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;IACzC,KAAK,CAAC,2CAA2C,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE5E,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;IAC3D,KAAK,CAAC,+BAA+B,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAErE,IAAI,YAAY,CAAC,KAAK,IAAI,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QAC9D,wEAAwE;QACxE,OAAO,YAA2C,CAAC;KACpD;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,MAAM,GAAG,GAAG,UAAU,8CAA8C,CAAC;QAC3E,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,gBAAgB,EAAC,CAAC,CAAC;AAChE,CAAC;AAzCD,4DAyCC"}
1
+ {"version":3,"file":"belongs-to.helpers.js","sourceRoot":"","sources":["../../../src/relations/belongs-to/belongs-to.helpers.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AACjC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAoE;AAEpE,MAAM,KAAK,GAAG,eAAY,CAAC,wCAAwC,CAAC,CAAC;AAQrE;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,YAAiC;IACxE,IAAK,YAAY,CAAC,IAAqB,KAAK,6BAAY,CAAC,SAAS,EAAE;QAClE,MAAM,MAAM,GAAG,iCAAiC,CAAC;QACjD,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,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QACzB,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACrC,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,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,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;IACzC,KAAK,CAAC,2CAA2C,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE5E,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC;IAC3D,KAAK,CAAC,+BAA+B,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAErE,IAAI,YAAY,CAAC,KAAK,IAAI,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QAC9D,wEAAwE;QACxE,OAAO,YAA2C,CAAC;KACpD;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,MAAM,GAAG,GAAG,UAAU,8CAA8C,CAAC;QAC3E,MAAM,IAAI,6BAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACtD;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,gBAAgB,EAAC,CAAC,CAAC;AAChE,CAAC;AAzCD,4DAyCC"}
@@ -3,12 +3,15 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
6
9
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const debugFactory = require("debug");
10
+ const debug_1 = __importDefault(require("debug"));
8
11
  const has_many_helpers_1 = require("./has-many.helpers");
9
12
  const has_many_inclusion_resolver_1 = require("./has-many.inclusion-resolver");
10
13
  const has_many_repository_1 = require("./has-many.repository");
11
- const debug = debugFactory('loopback:repository:has-many-repository-factory');
14
+ const debug = debug_1.default('loopback:repository:has-many-repository-factory');
12
15
  /**
13
16
  * Enforces a constraint on a repository based on a relationship contract
14
17
  * between models. For example, if a Customer model is related to an Order model
@@ -1 +1 @@
1
- {"version":3,"file":"has-many-repository.factory.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-repository.factory.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AAEhE,sCAAsC;AAKtC,yDAA0D;AAC1D,+EAA6E;AAC7E,+DAG+B;AAE/B,MAAM,KAAK,GAAG,YAAY,CAAC,iDAAiD,CAAC,CAAC;AAiB9E;;;;;;;;;;;;GAYG;AACH,SAAgB,8BAA8B,CAK5C,gBAAmC,EACnC,sBAAsE;IAEtE,MAAM,IAAI,GAAG,yCAAsB,CAAC,gBAAgB,CAAC,CAAC;IACtD,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAqD,UAC/D,OAAuB;QAEvB,8DAA8D;QAC9D,MAAM,UAAU,GAAQ,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAC,CAAC;QAChD,OAAO,IAAI,8CAAwB,CAIjC,sBAAsB,EAAE,UAAgC,CAAC,CAAC;IAC9D,CAAC,CAAC;IACF,MAAM,CAAC,iBAAiB,GAAG,4DAA8B,CACvD,IAAI,EACJ,sBAAsB,CACvB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AA1BD,wEA0BC"}
1
+ {"version":3,"file":"has-many-repository.factory.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many-repository.factory.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AAKjC,yDAA0D;AAC1D,+EAA6E;AAC7E,+DAG+B;AAE/B,MAAM,KAAK,GAAG,eAAY,CAAC,iDAAiD,CAAC,CAAC;AAiB9E;;;;;;;;;;;;GAYG;AACH,SAAgB,8BAA8B,CAK5C,gBAAmC,EACnC,sBAAsE;IAEtE,MAAM,IAAI,GAAG,yCAAsB,CAAC,gBAAgB,CAAC,CAAC;IACtD,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;IACtD,MAAM,MAAM,GAAqD,UAC/D,OAAuB;QAEvB,8DAA8D;QAC9D,MAAM,UAAU,GAAQ,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAC,CAAC;QAChD,OAAO,IAAI,8CAAwB,CAIjC,sBAAsB,EAAE,UAAgC,CAAC,CAAC;IAC9D,CAAC,CAAC;IACF,MAAM,CAAC,iBAAiB,GAAG,4DAA8B,CACvD,IAAI,EACJ,sBAAsB,CACvB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AA1BD,wEA0BC"}
@@ -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"}
@@ -3,13 +3,16 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
6
9
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const debugFactory = require("debug");
10
+ const debug_1 = __importDefault(require("debug"));
8
11
  const lodash_1 = require("lodash");
9
12
  const errors_1 = require("../../errors");
10
13
  const type_resolver_1 = require("../../type-resolver");
11
14
  const relation_types_1 = require("../relation.types");
12
- const debug = debugFactory('loopback:repository:has-many-helpers');
15
+ const debug = debug_1.default('loopback:repository:has-many-helpers');
13
16
  /**
14
17
  * Resolves given hasMany metadata if target is specified to be a resolver.
15
18
  * Mainly used to infer what the `keyTo` property should be from the target's
@@ -33,7 +36,15 @@ function resolveHasManyMetadata(relationMeta) {
33
36
  const reason = 'source model must be defined';
34
37
  throw new errors_1.InvalidRelationError(reason, relationMeta);
35
38
  }
36
- 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
+ }
37
48
  // Make sure that if it already keys to the foreign key property,
38
49
  // the key exists in the target model
39
50
  if (relationMeta.keyTo && targetModelProperties[relationMeta.keyTo]) {
@@ -47,7 +58,10 @@ function resolveHasManyMetadata(relationMeta) {
47
58
  const reason = `target model ${targetModel.name} is missing definition of foreign key ${defaultFkName}`;
48
59
  throw new errors_1.InvalidRelationError(reason, relationMeta);
49
60
  }
50
- return Object.assign(relationMeta, { keyFrom, keyTo: defaultFkName });
61
+ return Object.assign(relationMeta, {
62
+ keyFrom,
63
+ keyTo: defaultFkName,
64
+ });
51
65
  }
52
66
  exports.resolveHasManyMetadata = resolveHasManyMetadata;
53
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,sCAAsC;AACtC,mCAAiC;AACjC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAkE;AAElE,MAAM,KAAK,GAAG,YAAY,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"}
@@ -3,11 +3,14 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
6
9
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const debugFactory = require("debug");
10
+ const debug_1 = __importDefault(require("debug"));
8
11
  const relation_helpers_1 = require("../relation.helpers");
9
12
  const has_many_helpers_1 = require("./has-many.helpers");
10
- const debug = debugFactory('loopback:repository:has-many-inclusion-resolver');
13
+ const debug = debug_1.default('loopback:repository:has-many-inclusion-resolver');
11
14
  /**
12
15
  * Creates InclusionResolver for HasMany relation.
13
16
  * Notice that this function only generates the inclusionResolver.
@@ -1 +1 @@
1
- {"version":3,"file":"has-many.inclusion-resolver.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many.inclusion-resolver.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AAEhE,sCAAsC;AAKtC,0DAI6B;AAE7B,yDAA0D;AAE1D,MAAM,KAAK,GAAG,YAAY,CAAC,iDAAiD,CAAC,CAAC;AAE9E;;;;;;;;;GASG;AACH,SAAgB,8BAA8B,CAK5C,IAAuB,EACvB,aAEC;IAED,MAAM,YAAY,GAAG,yCAAsB,CAAC,IAAI,CAAC,CAAC;IAElD,OAAO,KAAK,UAAU,kBAAkB,CACtC,QAAkB,EAClB,SAA+B,EAC/B,OAAiB;QAEjB,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEhC,KAAK,CAAC,sCAAsC,EAAE,QAAQ,CAAC,CAAC;QACxD,KAAK,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,YAAY,CAAC,KAA4B,CAAC;QAE5D,KAAK,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;QACxD,KAAK,CACH,gBAAgB,EAChB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAC7B,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,MAAM,oCAAiB,CAC1C,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,CAAC,KAAuB,EACjC,OAAO,CACR,CAAC;QAEF,KAAK,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,oDAAiC,CAC9C,SAAS,EACT,YAAY,EACZ,SAAS,CACV,CAAC;QAEF,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AApDD,wEAoDC"}
1
+ {"version":3,"file":"has-many.inclusion-resolver.js","sourceRoot":"","sources":["../../../src/relations/has-many/has-many.inclusion-resolver.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AAKjC,0DAI6B;AAE7B,yDAA0D;AAE1D,MAAM,KAAK,GAAG,eAAY,CAAC,iDAAiD,CAAC,CAAC;AAE9E;;;;;;;;;GASG;AACH,SAAgB,8BAA8B,CAK5C,IAAuB,EACvB,aAEC;IAED,MAAM,YAAY,GAAG,yCAAsB,CAAC,IAAI,CAAC,CAAC;IAElD,OAAO,KAAK,UAAU,kBAAkB,CACtC,QAAkB,EAClB,SAA+B,EAC/B,OAAiB;QAEjB,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEhC,KAAK,CAAC,sCAAsC,EAAE,QAAQ,CAAC,CAAC;QACxD,KAAK,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,YAAY,CAAC,KAA4B,CAAC;QAE5D,KAAK,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;QACxD,KAAK,CACH,gBAAgB,EAChB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAC7B,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,MAAM,oCAAiB,CAC1C,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,CAAC,KAAuB,EACjC,OAAO,CACR,CAAC;QAEF,KAAK,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,oDAAiC,CAC9C,SAAS,EACT,YAAY,EACZ,SAAS,CACV,CAAC;QAEF,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AApDD,wEAoDC"}
@@ -3,12 +3,15 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
6
9
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const debugFactory = require("debug");
10
+ const debug_1 = __importDefault(require("debug"));
8
11
  const has_one_helpers_1 = require("./has-one.helpers");
9
12
  const has_one_inclusion_resolver_1 = require("./has-one.inclusion-resolver");
10
13
  const has_one_repository_1 = require("./has-one.repository");
11
- const debug = debugFactory('loopback:repository:has-one-repository-factory');
14
+ const debug = debug_1.default('loopback:repository:has-one-repository-factory');
12
15
  /**
13
16
  * Enforces a constraint on a repository based on a relationship contract
14
17
  * between models. For example, if a Customer model is related to an Address model
@@ -1 +1 @@
1
- {"version":3,"file":"has-one-repository.factory.js","sourceRoot":"","sources":["../../../src/relations/has-one/has-one-repository.factory.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AAEhE,sCAAsC;AAKtC,uDAAwD;AACxD,6EAA2E;AAC3E,6DAA+E;AAE/E,MAAM,KAAK,GAAG,YAAY,CAAC,gDAAgD,CAAC,CAAC;AAgB7E;;;;;;;;;;;;GAYG;AACH,SAAgB,6BAA6B,CAK3C,gBAAkC,EAClC,sBAAsE;IAEtE,MAAM,IAAI,GAAG,uCAAqB,CAAC,gBAAgB,CAAC,CAAC;IACrD,KAAK,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,MAAM,GAAoD,UAC9D,OAAuB;QAEvB,8DAA8D;QAC9D,MAAM,UAAU,GAAQ,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAC,CAAC;QAChD,OAAO,IAAI,4CAAuB,CAIhC,sBAAsB,EAAE,UAAgC,CAAC,CAAC;IAC9D,CAAC,CAAC;IACF,MAAM,CAAC,iBAAiB,GAAG,0DAA6B,CACtD,IAAI,EACJ,sBAAsB,CACvB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AA1BD,sEA0BC"}
1
+ {"version":3,"file":"has-one-repository.factory.js","sourceRoot":"","sources":["../../../src/relations/has-one/has-one-repository.factory.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;;;;AAEhE,kDAAiC;AAKjC,uDAAwD;AACxD,6EAA2E;AAC3E,6DAA+E;AAE/E,MAAM,KAAK,GAAG,eAAY,CAAC,gDAAgD,CAAC,CAAC;AAgB7E;;;;;;;;;;;;GAYG;AACH,SAAgB,6BAA6B,CAK3C,gBAAkC,EAClC,sBAAsE;IAEtE,MAAM,IAAI,GAAG,uCAAqB,CAAC,gBAAgB,CAAC,CAAC;IACrD,KAAK,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;IACrD,MAAM,MAAM,GAAoD,UAC9D,OAAuB;QAEvB,8DAA8D;QAC9D,MAAM,UAAU,GAAQ,EAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAC,CAAC;QAChD,OAAO,IAAI,4CAAuB,CAIhC,sBAAsB,EAAE,UAAgC,CAAC,CAAC;IAC9D,CAAC,CAAC;IACF,MAAM,CAAC,iBAAiB,GAAG,0DAA6B,CACtD,IAAI,EACJ,sBAAsB,CACvB,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AA1BD,sEA0BC"}
@@ -3,13 +3,16 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
6
9
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const debugFactory = require("debug");
10
+ const debug_1 = __importDefault(require("debug"));
8
11
  const lodash_1 = require("lodash");
9
12
  const errors_1 = require("../../errors");
10
13
  const type_resolver_1 = require("../../type-resolver");
11
14
  const relation_types_1 = require("../relation.types");
12
- const debug = debugFactory('loopback:repository:has-one-helpers');
15
+ const debug = debug_1.default('loopback:repository:has-one-helpers');
13
16
  /**
14
17
  * Resolves given hasOne metadata if target is specified to be a resolver.
15
18
  * Mainly used to infer what the `keyTo` property should be from the target's
@@ -33,7 +36,15 @@ function resolveHasOneMetadata(relationMeta) {
33
36
  const reason = 'source model must be defined';
34
37
  throw new errors_1.InvalidRelationError(reason, relationMeta);
35
38
  }
36
- 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
+ }
37
48
  // Make sure that if it already keys to the foreign key property,
38
49
  // the key exists in the target model
39
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,sCAAsC;AACtC,mCAAiC;AACjC,yCAAkD;AAClD,uDAAmD;AACnD,sDAAiE;AAEjE,MAAM,KAAK,GAAG,YAAY,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"}
@@ -27,9 +27,10 @@ exports.relation = relation;
27
27
  * @returns A map of relation definitions
28
28
  */
29
29
  function getModelRelations(modelCtor) {
30
+ var _a;
30
31
  // Build model definitions if `@model` is missing
31
32
  const modelDef = decorators_1.buildModelDefinition(modelCtor);
32
- return (modelDef && modelDef.relations) || {};
33
+ return ((_a = modelDef) === null || _a === void 0 ? void 0 : _a.relations) || {};
33
34
  }
34
35
  exports.getModelRelations = getModelRelations;
35
36
  //
@@ -1 +1 @@
1
- {"version":3,"file":"relation.decorator.js","sourceRoot":"","sources":["../../src/relations/relation.decorator.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AAEhE,+CAA2D;AAC3D,8CAAmD;AAEnD,qDAA8C;AAEjC,QAAA,aAAa,GAAG,oBAAoB,CAAC;AAElD;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,UAAmB;IAC1C,+CAA+C;IAC/C,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,UAAU,EAAE;QACzE,aAAa,EAAE,WAAW;KAC3B,CAAC,CAAC;AACL,CAAC;AALD,4BAKC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,SAAuB;IAEvB,iDAAiD;IACjD,MAAM,QAAQ,GAAG,iCAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAND,8CAMC;AAED,EAAE;AACF,oEAAoE;AACpE,6DAA6D;AAC7D,EAAE;AAEF;;;;GAIG;AACH,SAAgB,SAAS,CAAC,UAAmB;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,SAAS,EAAC,EAAE,UAAU,CAAC,CAAC;IACtE,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,YAAY;KAC5B,CAAC,CAAC;AACL,CAAC;AALD,8BAKC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,UAAU,EAAC,EAAE,UAAU,CAAC,CAAC;IACvE,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,aAAa;KAC7B,CAAC,CAAC;AACL,CAAC;AALD,gCAKC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,UAAmB;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,aAAa,EAAC,EAAE,UAAU,CAAC,CAAC;IAC1E,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,gBAAgB;KAChC,CAAC,CAAC;AACL,CAAC;AALD,sCAKC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,UAAmB;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,cAAc,EAAC,EAAE,UAAU,CAAC,CAAC;IAC3E,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,iBAAiB;KACjC,CAAC,CAAC;AACL,CAAC;AALD,wCAKC"}
1
+ {"version":3,"file":"relation.decorator.js","sourceRoot":"","sources":["../../src/relations/relation.decorator.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,oCAAoC;AACpC,+CAA+C;AAC/C,gEAAgE;;AAEhE,+CAA2D;AAC3D,8CAAmD;AAEnD,qDAA8C;AAEjC,QAAA,aAAa,GAAG,oBAAoB,CAAC;AAElD;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,UAAmB;IAC1C,+CAA+C;IAC/C,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,UAAU,EAAE;QACzE,aAAa,EAAE,WAAW;KAC3B,CAAC,CAAC;AACL,CAAC;AALD,4BAKC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,SAAuB;;IAEvB,iDAAiD;IACjD,MAAM,QAAQ,GAAG,iCAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,OAAA,QAAQ,0CAAE,SAAS,KAAI,EAAE,CAAC;AACnC,CAAC;AAND,8CAMC;AAED,EAAE;AACF,oEAAoE;AACpE,6DAA6D;AAC7D,EAAE;AAEF;;;;GAIG;AACH,SAAgB,SAAS,CAAC,UAAmB;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,SAAS,EAAC,EAAE,UAAU,CAAC,CAAC;IACtE,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,YAAY;KAC5B,CAAC,CAAC;AACL,CAAC;AALD,8BAKC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CAAC,UAAmB;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,UAAU,EAAC,EAAE,UAAU,CAAC,CAAC;IACvE,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,aAAa;KAC7B,CAAC,CAAC;AACL,CAAC;AALD,gCAKC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,UAAmB;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,aAAa,EAAC,EAAE,UAAU,CAAC,CAAC;IAC1E,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,gBAAgB;KAChC,CAAC,CAAC;AACL,CAAC;AALD,sCAKC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,UAAmB;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,6BAAY,CAAC,cAAc,EAAC,EAAE,UAAU,CAAC,CAAC;IAC3E,OAAO,kCAAwB,CAAC,eAAe,CAAC,qBAAa,EAAE,GAAG,EAAE;QAClE,aAAa,EAAE,iBAAiB;KACjC,CAAC,CAAC;AACL,CAAC;AALD,wCAKC"}
@@ -2,7 +2,7 @@ import { AnyObject, Entity, EntityCrudRepository, Filter, Inclusion, Options } f
2
2
  /**
3
3
  * Finds model instances that contain any of the provided foreign key values.
4
4
  *
5
- * @param targetRepository - The target repository where the model instances are found
5
+ * @param targetRepository - The target repository where the related model instances are found
6
6
  * @param fkName - Name of the foreign key
7
7
  * @param fkValues - One value or array of values of the foreign key to be included
8
8
  * @param scope - Additional scope constraints (not currently supported)
@@ -3,26 +3,25 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
6
9
  Object.defineProperty(exports, "__esModule", { value: true });
7
- const assert = require("assert");
8
- const debugFactory = require("debug");
9
- const _ = require("lodash");
10
- const debug = debugFactory('loopback:repository:relation-helpers');
10
+ const assert_1 = __importDefault(require("assert"));
11
+ const debug_1 = __importDefault(require("debug"));
12
+ const lodash_1 = __importDefault(require("lodash"));
13
+ const __1 = require("..");
14
+ const debug = debug_1.default('loopback:repository:relation-helpers');
11
15
  /**
12
16
  * Finds model instances that contain any of the provided foreign key values.
13
17
  *
14
- * @param targetRepository - The target repository where the model instances are found
18
+ * @param targetRepository - The target repository where the related model instances are found
15
19
  * @param fkName - Name of the foreign key
16
20
  * @param fkValues - One value or array of values of the foreign key to be included
17
21
  * @param scope - Additional scope constraints (not currently supported)
18
22
  * @param options - Options for the operations
19
23
  */
20
24
  async function findByForeignKeys(targetRepository, fkName, fkValues, scope, options) {
21
- // throw error if scope is defined and non-empty
22
- // see https://github.com/strongloop/loopback-next/issues/3453
23
- if (scope && !_.isEmpty(scope)) {
24
- throw new Error('scope is not supported');
25
- }
26
25
  let value;
27
26
  if (Array.isArray(fkValues)) {
28
27
  if (fkValues.length === 0)
@@ -40,8 +39,14 @@ async function findByForeignKeys(targetRepository, fkName, fkValues, scope, opti
40
39
  value = fkValues;
41
40
  }
42
41
  const where = { [fkName]: value };
43
- const targetFilter = { where };
44
- return targetRepository.find(targetFilter, options);
42
+ if (scope && !lodash_1.default.isEmpty(scope)) {
43
+ // combine where clause to scope filter
44
+ scope = new __1.FilterBuilder(scope).impose({ where }).filter;
45
+ }
46
+ else {
47
+ scope = { where };
48
+ }
49
+ return targetRepository.find(scope, options);
45
50
  }
46
51
  exports.findByForeignKeys = findByForeignKeys;
47
52
  /**
@@ -233,7 +238,7 @@ function deduplicate(input) {
233
238
  if (!input) {
234
239
  return uniqArray;
235
240
  }
236
- assert(Array.isArray(input), 'array argument is required');
241
+ assert_1.default(Array.isArray(input), 'array argument is required');
237
242
  const comparableArray = input.map(item => normalizeKey(item));
238
243
  for (let i = 0, n = comparableArray.length; i < n; i++) {
239
244
  if (comparableArray.indexOf(comparableArray[i]) === i) {
@@ -1 +1 @@
1
- {"version":3,"file":"relation.helpers.js","sourceRoot":"","sources":["../../src/relations/relation.helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation.helpers.js","sourceRoot":"","sources":["../../src/relations/relation.helpers.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -1,7 +1,7 @@
1
- import * as legacy from 'loopback-datasource-juggler';
2
- import { Options, DataObject } from '../common-types';
1
+ import legacy from 'loopback-datasource-juggler';
2
+ import { DataObject, Options } from '../common-types';
3
3
  import { Entity } from '../model';
4
- import { KeyValueRepository, KeyValueFilter } from './kv.repository';
4
+ import { KeyValueFilter, KeyValueRepository } from './kv.repository';
5
5
  import { juggler } from './legacy-juggler-bridge';
6
6
  /**
7
7
  * An implementation of KeyValueRepository based on loopback-datasource-juggler
@@ -76,7 +76,7 @@ class AsyncKeyIteratorImpl {
76
76
  next() {
77
77
  const key = legacy_juggler_bridge_1.ensurePromise(this.keys.next());
78
78
  return key.then(k => {
79
- return { done: k === undefined, value: k || '' };
79
+ return { done: k === undefined, value: (k !== null && k !== void 0 ? k : '') };
80
80
  });
81
81
  }
82
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kv.repository.bridge.js","sourceRoot":"","sources":["../../src/repositories/kv.repository.bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kv.repository.bridge.js","sourceRoot":"","sources":["../../src/repositories/kv.repository.bridge.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Getter } from '@loopback/context';
2
- import * as legacy from 'loopback-datasource-juggler';
2
+ import legacy from 'loopback-datasource-juggler';
3
3
  import { AnyObject, Command, Count, DataObject, NamedParameters, Options, PositionalParameters } from '../common-types';
4
4
  import { Entity } from '../model';
5
5
  import { Filter, Inclusion, Where } from '../query';
@@ -155,6 +155,25 @@ export declare class DefaultCrudRepository<T extends Entity, ID, Relations exten
155
155
  * @param options - Options for the operations
156
156
  */
157
157
  protected includeRelatedModels(entities: T[], include?: Inclusion<T>[], options?: Options): Promise<(T & Relations)[]>;
158
+ /**
159
+ * This function works as a persist hook.
160
+ * It converts an entity from the CRUD operations' caller
161
+ * to a persistable data that can will be stored in the
162
+ * back-end database.
163
+ *
164
+ * User can extend `DefaultCrudRepository` then override this
165
+ * function to execute custom persist hook.
166
+ * @param entity The entity passed from CRUD operations' caller.
167
+ * @param options
168
+ */
169
+ protected entityToData<R extends T>(entity: R | DataObject<R>, options?: {}): Promise<legacy.ModelData<legacy.PersistedModel>>;
170
+ /** Converts an entity object to a JSON object to check if it contains navigational property.
171
+ * Throws an error if `entity` contains navigational property.
172
+ *
173
+ * @param entity The entity passed from CRUD operations' caller.
174
+ * @param options
175
+ */
176
+ protected ensurePersistable<R extends T>(entity: R | DataObject<R>, options?: {}): legacy.ModelData<legacy.PersistedModel>;
158
177
  /**
159
178
  * Removes juggler's "include" filter as it does not apply to LoopBack 4
160
179
  * relations.