@loopback/repository-tests 0.20.2 → 0.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/LICENSE +2 -2
  2. package/dist/crud/create-retrieve.suite.js +1 -1
  3. package/dist/crud/create-retrieve.suite.js.map +1 -1
  4. package/dist/crud/freeform-properties.suite.js +2 -2
  5. package/dist/crud/freeform-properties.suite.js.map +1 -1
  6. package/dist/crud/nested-model-properties.suite.js +1 -1
  7. package/dist/crud/nested-model-properties.suite.js.map +1 -1
  8. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.d.ts +2 -0
  9. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.js +170 -0
  10. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.js.map +1 -0
  11. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.relation.acceptance.js +1 -1
  12. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.relation.acceptance.js.map +1 -1
  13. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.d.ts +2 -0
  14. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.js +55 -0
  15. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.js.map +1 -0
  16. package/dist/crud/relations/acceptance/belongs-to.relation.acceptance.js +1 -1
  17. package/dist/crud/relations/acceptance/belongs-to.relation.acceptance.js.map +1 -1
  18. package/dist/crud/relations/acceptance/has-many-inclusion-resolver.relation.acceptance.js +1 -1
  19. package/dist/crud/relations/acceptance/has-many-inclusion-resolver.relation.acceptance.js.map +1 -1
  20. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.acceptance.js +1 -1
  21. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.acceptance.js.map +1 -1
  22. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.d.ts +2 -0
  23. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.js +170 -0
  24. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.js.map +1 -0
  25. package/dist/crud/relations/acceptance/has-many-through.relation.acceptance.js +1 -1
  26. package/dist/crud/relations/acceptance/has-many-through.relation.acceptance.js.map +1 -1
  27. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.d.ts +2 -0
  28. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.js +361 -0
  29. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.js.map +1 -0
  30. package/dist/crud/relations/acceptance/has-many.relation.acceptance.js +1 -1
  31. package/dist/crud/relations/acceptance/has-many.relation.acceptance.js.map +1 -1
  32. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.acceptance.js +1 -1
  33. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.acceptance.js.map +1 -1
  34. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.d.ts +2 -0
  35. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.js +161 -0
  36. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.js.map +1 -0
  37. package/dist/crud/relations/acceptance/has-one.relation.acceptance.js +1 -1
  38. package/dist/crud/relations/acceptance/has-one.relation.acceptance.js.map +1 -1
  39. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.d.ts +2 -0
  40. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.js +190 -0
  41. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.js.map +1 -0
  42. package/dist/crud/relations/acceptance/multi-relations-inclusion-resolver.relation.acceptance.js +1 -1
  43. package/dist/crud/relations/acceptance/multi-relations-inclusion-resolver.relation.acceptance.js.map +1 -1
  44. package/dist/crud/relations/fixtures/models/address.model.js +1 -1
  45. package/dist/crud/relations/fixtures/models/address.model.js.map +1 -1
  46. package/dist/crud/relations/fixtures/models/cart-item.model.js +1 -1
  47. package/dist/crud/relations/fixtures/models/cart-item.model.js.map +1 -1
  48. package/dist/crud/relations/fixtures/models/contact.model.d.ts +18 -0
  49. package/dist/crud/relations/fixtures/models/contact.model.js +49 -0
  50. package/dist/crud/relations/fixtures/models/contact.model.js.map +1 -0
  51. package/dist/crud/relations/fixtures/models/customer-cart-item-link.model.js +1 -1
  52. package/dist/crud/relations/fixtures/models/customer-cart-item-link.model.js.map +1 -1
  53. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.d.ts +14 -0
  54. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.js +46 -0
  55. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.js.map +1 -0
  56. package/dist/crud/relations/fixtures/models/customer.model.d.ts +16 -3
  57. package/dist/crud/relations/fixtures/models/customer.model.js +28 -10
  58. package/dist/crud/relations/fixtures/models/customer.model.js.map +1 -1
  59. package/dist/crud/relations/fixtures/models/index.d.ts +6 -0
  60. package/dist/crud/relations/fixtures/models/index.js +7 -1
  61. package/dist/crud/relations/fixtures/models/index.js.map +1 -1
  62. package/dist/crud/relations/fixtures/models/order.model.js +1 -1
  63. package/dist/crud/relations/fixtures/models/order.model.js.map +1 -1
  64. package/dist/crud/relations/fixtures/models/payment-method.model.d.ts +47 -0
  65. package/dist/crud/relations/fixtures/models/payment-method.model.js +87 -0
  66. package/dist/crud/relations/fixtures/models/payment-method.model.js.map +1 -0
  67. package/dist/crud/relations/fixtures/models/promotion.model.d.ts +27 -0
  68. package/dist/crud/relations/fixtures/models/promotion.model.js +54 -0
  69. package/dist/crud/relations/fixtures/models/promotion.model.js.map +1 -0
  70. package/dist/crud/relations/fixtures/models/shipment.model.js +1 -1
  71. package/dist/crud/relations/fixtures/models/shipment.model.js.map +1 -1
  72. package/dist/crud/relations/fixtures/models/stakeholder.model.d.ts +7 -0
  73. package/dist/crud/relations/fixtures/models/stakeholder.model.js +38 -0
  74. package/dist/crud/relations/fixtures/models/stakeholder.model.js.map +1 -0
  75. package/dist/crud/relations/fixtures/models/supplier.model.d.ts +15 -0
  76. package/dist/crud/relations/fixtures/models/supplier.model.js +23 -0
  77. package/dist/crud/relations/fixtures/models/supplier.model.js.map +1 -0
  78. package/dist/crud/relations/fixtures/models/user-link.model.js +1 -1
  79. package/dist/crud/relations/fixtures/models/user-link.model.js.map +1 -1
  80. package/dist/crud/relations/fixtures/models/user.model.js +1 -1
  81. package/dist/crud/relations/fixtures/models/user.model.js.map +1 -1
  82. package/dist/crud/relations/fixtures/repositories/address.repository.js +1 -1
  83. package/dist/crud/relations/fixtures/repositories/address.repository.js.map +1 -1
  84. package/dist/crud/relations/fixtures/repositories/cart-item.repository.js +1 -1
  85. package/dist/crud/relations/fixtures/repositories/cart-item.repository.js.map +1 -1
  86. package/dist/crud/relations/fixtures/repositories/contact.repository.d.ts +30 -0
  87. package/dist/crud/relations/fixtures/repositories/contact.repository.js +21 -0
  88. package/dist/crud/relations/fixtures/repositories/contact.repository.js.map +1 -0
  89. package/dist/crud/relations/fixtures/repositories/customer-cart-item-link.repository.js +1 -1
  90. package/dist/crud/relations/fixtures/repositories/customer-cart-item-link.repository.js.map +1 -1
  91. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.d.ts +26 -0
  92. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.js +18 -0
  93. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.js.map +1 -0
  94. package/dist/crud/relations/fixtures/repositories/customer.repository.d.ts +9 -2
  95. package/dist/crud/relations/fixtures/repositories/customer.repository.js +8 -2
  96. package/dist/crud/relations/fixtures/repositories/customer.repository.js.map +1 -1
  97. package/dist/crud/relations/fixtures/repositories/index.d.ts +6 -1
  98. package/dist/crud/relations/fixtures/repositories/index.js +7 -2
  99. package/dist/crud/relations/fixtures/repositories/index.js.map +1 -1
  100. package/dist/crud/relations/fixtures/repositories/order.repository.js +1 -1
  101. package/dist/crud/relations/fixtures/repositories/order.repository.js.map +1 -1
  102. package/dist/crud/relations/fixtures/repositories/payment-method.repository.d.ts +77 -0
  103. package/dist/crud/relations/fixtures/repositories/payment-method.repository.js +45 -0
  104. package/dist/crud/relations/fixtures/repositories/payment-method.repository.js.map +1 -0
  105. package/dist/crud/relations/fixtures/repositories/promotion.repository.d.ts +49 -0
  106. package/dist/crud/relations/fixtures/repositories/promotion.repository.js +25 -0
  107. package/dist/crud/relations/fixtures/repositories/promotion.repository.js.map +1 -0
  108. package/dist/crud/relations/fixtures/repositories/shipment.repository.js +1 -1
  109. package/dist/crud/relations/fixtures/repositories/shipment.repository.js.map +1 -1
  110. package/dist/crud/relations/fixtures/repositories/supplier.repository.d.ts +28 -0
  111. package/dist/crud/relations/fixtures/repositories/supplier.repository.js +21 -0
  112. package/dist/crud/relations/fixtures/repositories/supplier.repository.js.map +1 -0
  113. package/dist/crud/relations/fixtures/repositories/user-link.repository.js +1 -1
  114. package/dist/crud/relations/fixtures/repositories/user-link.repository.js.map +1 -1
  115. package/dist/crud/relations/fixtures/repositories/user.repository.js +1 -1
  116. package/dist/crud/relations/fixtures/repositories/user.repository.js.map +1 -1
  117. package/dist/crud/relations/helpers.d.ts +9 -1
  118. package/dist/crud/relations/helpers.js +86 -11
  119. package/dist/crud/relations/helpers.js.map +1 -1
  120. package/dist/crud/replace-by-id.suite.js +1 -1
  121. package/dist/crud/replace-by-id.suite.js.map +1 -1
  122. package/dist/crud/transactions.suite.js +1 -1
  123. package/dist/crud/transactions.suite.js.map +1 -1
  124. package/dist/crud-test-suite.js +1 -1
  125. package/dist/crud-test-suite.js.map +1 -1
  126. package/dist/helpers.repository-tests.d.ts +1 -1
  127. package/dist/helpers.repository-tests.js +1 -1
  128. package/dist/helpers.repository-tests.js.map +1 -1
  129. package/dist/index.js +1 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/types.repository-tests.js +1 -1
  132. package/dist/types.repository-tests.js.map +1 -1
  133. package/package.json +14 -14
  134. package/src/crud/create-retrieve.suite.ts +1 -1
  135. package/src/crud/freeform-properties.suite.ts +10 -6
  136. package/src/crud/nested-model-properties.suite.ts +1 -1
  137. package/src/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.ts +221 -0
  138. package/src/crud/relations/acceptance/belongs-to.inclusion-resolver.relation.acceptance.ts +1 -1
  139. package/src/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.ts +88 -0
  140. package/src/crud/relations/acceptance/belongs-to.relation.acceptance.ts +1 -1
  141. package/src/crud/relations/acceptance/has-many-inclusion-resolver.relation.acceptance.ts +1 -1
  142. package/src/crud/relations/acceptance/has-many-through-inclusion-resolver.acceptance.ts +1 -1
  143. package/src/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.ts +255 -0
  144. package/src/crud/relations/acceptance/has-many-through.relation.acceptance.ts +2 -2
  145. package/src/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.ts +494 -0
  146. package/src/crud/relations/acceptance/has-many.relation.acceptance.ts +1 -1
  147. package/src/crud/relations/acceptance/has-one.inclusion-resolver.acceptance.ts +1 -1
  148. package/src/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.ts +208 -0
  149. package/src/crud/relations/acceptance/has-one.relation.acceptance.ts +1 -1
  150. package/src/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.ts +328 -0
  151. package/src/crud/relations/acceptance/multi-relations-inclusion-resolver.relation.acceptance.ts +1 -1
  152. package/src/crud/relations/fixtures/models/address.model.ts +1 -1
  153. package/src/crud/relations/fixtures/models/cart-item.model.ts +1 -1
  154. package/src/crud/relations/fixtures/models/contact.model.ts +56 -0
  155. package/src/crud/relations/fixtures/models/customer-cart-item-link.model.ts +1 -1
  156. package/src/crud/relations/fixtures/models/customer-promotion-link.model.ts +52 -0
  157. package/src/crud/relations/fixtures/models/customer.model.ts +40 -10
  158. package/src/crud/relations/fixtures/models/index.ts +7 -1
  159. package/src/crud/relations/fixtures/models/order.model.ts +1 -1
  160. package/src/crud/relations/fixtures/models/payment-method.model.ts +118 -0
  161. package/src/crud/relations/fixtures/models/promotion.model.ts +67 -0
  162. package/src/crud/relations/fixtures/models/shipment.model.ts +1 -1
  163. package/src/crud/relations/fixtures/models/stakeholder.model.ts +33 -0
  164. package/src/crud/relations/fixtures/models/supplier.model.ts +35 -0
  165. package/src/crud/relations/fixtures/models/user-link.model.ts +1 -1
  166. package/src/crud/relations/fixtures/models/user.model.ts +1 -1
  167. package/src/crud/relations/fixtures/repositories/address.repository.ts +1 -1
  168. package/src/crud/relations/fixtures/repositories/cart-item.repository.ts +1 -1
  169. package/src/crud/relations/fixtures/repositories/contact.repository.ts +44 -0
  170. package/src/crud/relations/fixtures/repositories/customer-cart-item-link.repository.ts +1 -1
  171. package/src/crud/relations/fixtures/repositories/customer-promotion-link.repository.ts +20 -0
  172. package/src/crud/relations/fixtures/repositories/customer.repository.ts +48 -1
  173. package/src/crud/relations/fixtures/repositories/index.ts +7 -2
  174. package/src/crud/relations/fixtures/repositories/order.repository.ts +1 -1
  175. package/src/crud/relations/fixtures/repositories/payment-method.repository.ts +118 -0
  176. package/src/crud/relations/fixtures/repositories/promotion.repository.ts +37 -0
  177. package/src/crud/relations/fixtures/repositories/shipment.repository.ts +1 -1
  178. package/src/crud/relations/fixtures/repositories/supplier.repository.ts +40 -0
  179. package/src/crud/relations/fixtures/repositories/user-link.repository.ts +1 -1
  180. package/src/crud/relations/fixtures/repositories/user.repository.ts +1 -1
  181. package/src/crud/relations/helpers.ts +201 -31
  182. package/src/crud/replace-by-id.suite.ts +1 -1
  183. package/src/crud/transactions.suite.ts +1 -1
  184. package/src/crud-test-suite.ts +1 -1
  185. package/src/helpers.repository-tests.ts +2 -2
  186. package/src/index.ts +1 -1
  187. package/src/types.repository-tests.ts +1 -1
@@ -1,11 +1,10 @@
1
- // Copyright IBM Corp. 2019,2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
5
5
 
6
6
  import {
7
7
  belongsTo,
8
- Entity,
9
8
  EntityCrudRepository,
10
9
  hasMany,
11
10
  HasManyRepositoryFactory,
@@ -19,18 +18,19 @@ import {BelongsToAccessor} from '@loopback/repository/src';
19
18
  import {MixedIdType} from '../../../../helpers.repository-tests';
20
19
  import {Address, AddressWithRelations} from './address.model';
21
20
  import {CartItem, CartItemWithRelations} from './cart-item.model';
21
+ import {Contact, ContactWithRelations} from './contact.model';
22
22
  import {CustomerCartItemLink} from './customer-cart-item-link.model';
23
+ import {CustomerPromotionLink} from './customer-promotion-link.model';
23
24
  import {Order, OrderWithRelations} from './order.model';
25
+ import {
26
+ PaymentMethod,
27
+ PaymentMethodWithRelations,
28
+ } from './payment-method.model';
29
+ import {Promotion, PromotionWithRelations} from './promotion.model';
30
+ import {Stakeholder} from './stakeholder.model';
24
31
 
25
32
  @model()
26
- export class Customer extends Entity {
27
- @property({
28
- id: true,
29
- generated: true,
30
- useDefaultIdType: true,
31
- })
32
- id: MixedIdType;
33
-
33
+ export class Customer extends Stakeholder {
34
34
  @property({
35
35
  type: 'string',
36
36
  })
@@ -50,6 +50,25 @@ export class Customer extends Entity {
50
50
 
51
51
  @hasMany(() => CartItem, {through: {model: () => CustomerCartItemLink}})
52
52
  cartItems: CartItem[];
53
+
54
+ @hasMany(() => Promotion, {
55
+ through: {
56
+ model: () => CustomerPromotionLink,
57
+ keyTo: 'promotion_id',
58
+ polymorphic: {discriminator: 'promotiontype'},
59
+ },
60
+ })
61
+ promotions: Promotion[];
62
+
63
+ @hasOne(() => PaymentMethod, {polymorphic: true})
64
+ paymentMethod: PaymentMethod;
65
+
66
+ @property({
67
+ type: 'string',
68
+ required: true,
69
+ default: 'CreditCard',
70
+ })
71
+ paymentMethodType: string;
53
72
  }
54
73
 
55
74
  export interface CustomerRelations {
@@ -58,6 +77,9 @@ export interface CustomerRelations {
58
77
  customers?: CustomerWithRelations[];
59
78
  parentCustomer?: CustomerWithRelations;
60
79
  cartItems?: CartItemWithRelations[];
80
+ paymentMethod: PaymentMethodWithRelations;
81
+ promotions?: PromotionWithRelations[];
82
+ contact?: ContactWithRelations;
61
83
  }
62
84
 
63
85
  export type CustomerWithRelations = Customer & CustomerRelations;
@@ -75,4 +97,12 @@ export interface CustomerRepository
75
97
  CustomerCartItemLink,
76
98
  MixedIdType
77
99
  >;
100
+ promotions: HasManyThroughRepositoryFactory<
101
+ Promotion,
102
+ MixedIdType,
103
+ CustomerPromotionLink,
104
+ MixedIdType
105
+ >;
106
+ paymentMethod: HasOneRepositoryFactory<PaymentMethod, MixedIdType>;
107
+ contact: HasOneRepositoryFactory<Contact, MixedIdType>;
78
108
  }
@@ -1,13 +1,19 @@
1
- // Copyright IBM Corp. 2019,2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
5
5
 
6
6
  export * from './address.model';
7
7
  export * from './cart-item.model';
8
+ export * from './contact.model';
8
9
  export * from './customer-cart-item-link.model';
10
+ export * from './customer-promotion-link.model';
9
11
  export * from './customer.model';
10
12
  export * from './order.model';
13
+ export * from './payment-method.model';
14
+ export * from './promotion.model';
11
15
  export * from './shipment.model';
16
+ export * from './stakeholder.model';
17
+ export * from './supplier.model';
12
18
  export * from './user-link.model';
13
19
  export * from './user.model';
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2019,2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
@@ -0,0 +1,118 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
+ // Node module: @loopback/repository-tests
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {
7
+ belongsTo,
8
+ Entity,
9
+ EntityCrudRepository,
10
+ hasOne,
11
+ HasOneRepositoryFactory,
12
+ model,
13
+ property,
14
+ } from '@loopback/repository';
15
+ import {BelongsToAccessor} from '@loopback/repository/src';
16
+ import {Customer, CustomerWithRelations} from '.';
17
+ import {MixedIdType} from '../../../../helpers.repository-tests';
18
+ import {Stakeholder} from './stakeholder.model';
19
+
20
+ @model()
21
+ export class PaymentMethod extends Entity {
22
+ @property({
23
+ id: true,
24
+ generated: true,
25
+ useDefaultIdType: true,
26
+ })
27
+ id: MixedIdType;
28
+
29
+ @belongsTo(() => Stakeholder)
30
+ customerId: MixedIdType;
31
+ }
32
+
33
+ export interface PaymentMethodRelations {
34
+ customer?: CustomerWithRelations[];
35
+ }
36
+
37
+ export type PaymentMethodWithRelations = PaymentMethod & PaymentMethodRelations;
38
+
39
+ @model()
40
+ export class CardInfo extends Entity {
41
+ @property({
42
+ id: true,
43
+ generated: true,
44
+ useDefaultIdType: true,
45
+ })
46
+ id: MixedIdType;
47
+
48
+ @belongsTo(() => CreditCard)
49
+ creditCardId: MixedIdType;
50
+
51
+ @property({
52
+ type: 'string',
53
+ required: true,
54
+ default: 'default holder',
55
+ })
56
+ cardHolder: string;
57
+ }
58
+
59
+ export interface CardInfoRelations {
60
+ creditCard?: CreditCardWithRelations[];
61
+ }
62
+
63
+ export type CardInfoWithRelations = CardInfo & CardInfoRelations;
64
+
65
+ @model()
66
+ export class CreditCard extends PaymentMethod {
67
+ @property({
68
+ type: 'number',
69
+ required: true,
70
+ default: 0,
71
+ })
72
+ cardNumber: number;
73
+
74
+ @hasOne(() => CardInfo)
75
+ cardInfo: CardInfo;
76
+ }
77
+
78
+ export interface CreditCardRelations {
79
+ customer?: CustomerWithRelations[];
80
+ cardInfo: CardInfoWithRelations;
81
+ }
82
+
83
+ export type CreditCardWithRelations = CreditCard & CreditCardRelations;
84
+
85
+ @model()
86
+ export class Cash extends PaymentMethod {
87
+ @property({
88
+ type: 'string',
89
+ required: true,
90
+ default: 'default cash detail',
91
+ })
92
+ detail: string;
93
+ }
94
+
95
+ export interface CashRelations {
96
+ customer?: CustomerWithRelations[];
97
+ }
98
+
99
+ export type CashWithRelations = Cash & CashRelations;
100
+
101
+ export interface CreditCardRepository
102
+ extends EntityCrudRepository<CreditCard, typeof CreditCard.prototype.id> {
103
+ // define additional members like relation methods here
104
+ customer: BelongsToAccessor<Customer, MixedIdType>;
105
+ cardInfo: HasOneRepositoryFactory<CardInfo, MixedIdType>;
106
+ }
107
+
108
+ export interface CashRepository
109
+ extends EntityCrudRepository<Cash, typeof Cash.prototype.id> {
110
+ // define additional members like relation methods here
111
+ customer: BelongsToAccessor<Customer, MixedIdType>;
112
+ }
113
+
114
+ export interface CardInfoRepository
115
+ extends EntityCrudRepository<CardInfo, typeof CardInfo.prototype.id> {
116
+ // define additional members like relation methods here
117
+ creditCard: BelongsToAccessor<CreditCard, MixedIdType>;
118
+ }
@@ -0,0 +1,67 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
2
+ // Node module: @loopback/repository-tests
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {
7
+ Entity,
8
+ EntityCrudRepository,
9
+ model,
10
+ property,
11
+ } from '@loopback/repository';
12
+ import {MixedIdType} from '../../../../helpers.repository-tests';
13
+
14
+ @model()
15
+ export class Promotion extends Entity {
16
+ @property({
17
+ id: true,
18
+ generated: true,
19
+ useDefaultIdType: true,
20
+ })
21
+ id: MixedIdType;
22
+
23
+ @property({
24
+ type: 'string',
25
+ })
26
+ description: string;
27
+ }
28
+
29
+ export interface PromotionRelations {}
30
+
31
+ export type PromotionWithRelations = Promotion & PromotionRelations;
32
+
33
+ export interface PromotionRepository
34
+ extends EntityCrudRepository<Promotion, typeof Promotion.prototype.id> {}
35
+
36
+ @model()
37
+ export class FreeDelivery extends Promotion {
38
+ @property({
39
+ type: 'string',
40
+ })
41
+ name: string;
42
+ }
43
+
44
+ export interface FreeDeliveryRelations {}
45
+
46
+ export type FreeDeliveryWithRelations = FreeDelivery & FreeDeliveryRelations;
47
+
48
+ export interface FreeDeliveryRepository
49
+ extends EntityCrudRepository<
50
+ FreeDelivery,
51
+ typeof FreeDelivery.prototype.id
52
+ > {}
53
+
54
+ @model()
55
+ export class HalfPrice extends Promotion {
56
+ @property({
57
+ type: 'string',
58
+ })
59
+ name: string;
60
+ }
61
+
62
+ export interface HalfPriceRelations {}
63
+
64
+ export type HalfPriceWithRelations = HalfPrice & HalfPriceRelations;
65
+
66
+ export interface HalfPriceRepository
67
+ extends EntityCrudRepository<HalfPrice, typeof HalfPrice.prototype.id> {}
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2019. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2019. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
@@ -0,0 +1,33 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
+ // Node module: @loopback/repository-tests
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {Entity, hasOne, model, property} from '@loopback/repository';
7
+ import {MixedIdType} from '../../../../helpers.repository-tests';
8
+ import {Contact} from './contact.model';
9
+
10
+ @model()
11
+ export class Stakeholder extends Entity {
12
+ @property({
13
+ id: true,
14
+ generated: true,
15
+ useDefaultIdType: true,
16
+ })
17
+ id: MixedIdType;
18
+
19
+ @hasOne(() => Contact)
20
+ contact: Contact;
21
+ }
22
+
23
+ // export interface StakeholderRelations {
24
+ // contact: ContactWithRelations;
25
+ // }
26
+
27
+ // export type StakeholderWithRelations = Stakeholder & StakeholderRelations;
28
+
29
+ // export interface StakeholderRepository
30
+ // extends EntityCrudRepository<Stakeholder, typeof Stakeholder.prototype.id> {
31
+ // // define additional members like relation methods here
32
+ // contact: HasOneRepositoryFactory<Contact, MixedIdType>;
33
+ // }
@@ -0,0 +1,35 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
+ // Node module: @loopback/repository-tests
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {
7
+ EntityCrudRepository,
8
+ HasOneRepositoryFactory,
9
+ model,
10
+ property,
11
+ } from '@loopback/repository';
12
+ import {MixedIdType} from '../../../../helpers.repository-tests';
13
+ import {Contact} from './contact.model';
14
+ import {PaymentMethodWithRelations} from './payment-method.model';
15
+ import {Stakeholder} from './stakeholder.model';
16
+
17
+ @model()
18
+ export class Supplier extends Stakeholder {
19
+ @property({
20
+ type: 'string',
21
+ })
22
+ name: string;
23
+ }
24
+
25
+ export interface SupplierRelations {
26
+ contact?: PaymentMethodWithRelations;
27
+ }
28
+
29
+ export type SupplierWithRelations = Supplier & SupplierRelations;
30
+
31
+ export interface SupplierRepository
32
+ extends EntityCrudRepository<Supplier, typeof Supplier.prototype.id> {
33
+ // define additional members like relation methods here
34
+ contact: HasOneRepositoryFactory<Contact, MixedIdType>;
35
+ }
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2019. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2019. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
@@ -0,0 +1,44 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2019. All Rights Reserved.
2
+ // Node module: @loopback/repository-tests
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {Getter} from '@loopback/core';
7
+ import {
8
+ BelongsToAccessor,
9
+ BelongsToDefinition,
10
+ createBelongsToAccessor,
11
+ juggler,
12
+ } from '@loopback/repository';
13
+ import {CrudRepositoryCtor} from '../../../..';
14
+ import {Contact, ContactRelations, Stakeholder} from '../models';
15
+
16
+ export function createContactRepo(repoClass: CrudRepositoryCtor) {
17
+ return class ContactRepository extends repoClass<
18
+ Contact,
19
+ typeof Contact.prototype.id,
20
+ ContactRelations
21
+ > {
22
+ public readonly stakeholder: BelongsToAccessor<
23
+ Stakeholder,
24
+ typeof Contact.prototype.id
25
+ >;
26
+
27
+ constructor(
28
+ db: juggler.DataSource,
29
+ stakeholderRepositoryGetter: {
30
+ [repoType: string]: Getter<typeof repoClass.prototype>;
31
+ },
32
+ ) {
33
+ super(Contact, db);
34
+ // create a belongsto relation from this public method
35
+ const stakeholderMeta =
36
+ this.entityClass.definition.relations['stakeholder'];
37
+ this.stakeholder = createBelongsToAccessor(
38
+ stakeholderMeta as BelongsToDefinition,
39
+ stakeholderRepositoryGetter,
40
+ this,
41
+ );
42
+ }
43
+ };
44
+ }
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
@@ -0,0 +1,20 @@
1
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
2
+ // Node module: @loopback/repository-tests
3
+ // This file is licensed under the MIT License.
4
+ // License text available at https://opensource.org/licenses/MIT
5
+
6
+ import {juggler} from '@loopback/repository';
7
+ import {CrudRepositoryCtor} from '../../../..';
8
+ import {CustomerPromotionLink, CustomerPromotionLinkRelations} from '../models';
9
+ // create the CustomerCartItemLinkRepo by calling this func so that it can be extended from CrudRepositoryCtor
10
+ export function createCustomerPromotionLinkRepo(repoClass: CrudRepositoryCtor) {
11
+ return class CustomerPromotionLinkRepository extends repoClass<
12
+ CustomerPromotionLink,
13
+ typeof CustomerPromotionLink.prototype.id,
14
+ CustomerPromotionLinkRelations
15
+ > {
16
+ constructor(db: juggler.DataSource) {
17
+ super(CustomerPromotionLink, db);
18
+ }
19
+ };
20
+ }
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2019,2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
@@ -22,10 +22,14 @@ import {CrudRepositoryCtor} from '../../../../types.repository-tests';
22
22
  import {
23
23
  Address,
24
24
  CartItem,
25
+ Contact,
25
26
  Customer,
26
27
  CustomerCartItemLink,
28
+ CustomerPromotionLink,
27
29
  CustomerRelations,
28
30
  Order,
31
+ PaymentMethod,
32
+ Promotion,
29
33
  } from '../models';
30
34
 
31
35
  // create the CustomerRepo by calling this func so that it can be extended from CrudRepositoryCtor
@@ -58,12 +62,37 @@ export function createCustomerRepo(repoClass: CrudRepositoryCtor) {
58
62
  typeof CustomerCartItemLink.prototype.id
59
63
  >;
60
64
 
65
+ public readonly promotions: HasManyThroughRepositoryFactory<
66
+ Promotion,
67
+ typeof Promotion.prototype.id,
68
+ CustomerPromotionLink,
69
+ typeof CustomerPromotionLink.prototype.id
70
+ >;
71
+
72
+ public readonly paymentMethod: HasOneRepositoryFactory<
73
+ PaymentMethod,
74
+ typeof Customer.prototype.id
75
+ >;
76
+
77
+ public readonly contact: HasOneRepositoryFactory<
78
+ Contact,
79
+ typeof Customer.prototype.id
80
+ >;
81
+
61
82
  constructor(
62
83
  db: juggler.DataSource,
63
84
  orderRepositoryGetter: Getter<typeof repoClass.prototype>,
64
85
  addressRepositoryGetter: Getter<typeof repoClass.prototype>,
65
86
  cartItemRepositoryGetter: Getter<typeof repoClass.prototype>,
66
87
  customerCartItemLinkRepositoryGetter: Getter<typeof repoClass.prototype>,
88
+ promotionRepositoryGetter: {
89
+ [repoType: string]: Getter<typeof repoClass.prototype>;
90
+ },
91
+ customerPromotionLinkRepositoryGetter: Getter<typeof repoClass.prototype>,
92
+ paymentMethodRepositoryGetter: {
93
+ [repoType: string]: Getter<typeof repoClass.prototype>;
94
+ },
95
+ contactRepositoryGetter: Getter<typeof repoClass.prototype>,
67
96
  ) {
68
97
  super(Customer, db);
69
98
  const ordersMeta = this.entityClass.definition.relations['orders'];
@@ -95,6 +124,24 @@ export function createCustomerRepo(repoClass: CrudRepositoryCtor) {
95
124
  cartItemRepositoryGetter,
96
125
  customerCartItemLinkRepositoryGetter,
97
126
  );
127
+ const promotionsMeta =
128
+ this.entityClass.definition.relations['promotions'];
129
+ this.promotions = createHasManyThroughRepositoryFactory(
130
+ promotionsMeta as HasManyDefinition,
131
+ promotionRepositoryGetter,
132
+ customerPromotionLinkRepositoryGetter,
133
+ );
134
+ const paymentMethodMeta =
135
+ this.entityClass.definition.relations['paymentMethod'];
136
+ this.paymentMethod = createHasOneRepositoryFactory(
137
+ paymentMethodMeta as HasOneDefinition,
138
+ paymentMethodRepositoryGetter,
139
+ );
140
+ const contactMeta = this.entityClass.definition.relations['contact'];
141
+ this.contact = createHasOneRepositoryFactory(
142
+ contactMeta as HasOneDefinition,
143
+ contactRepositoryGetter,
144
+ );
98
145
  }
99
146
  };
100
147
  }
@@ -1,13 +1,18 @@
1
- // Copyright IBM Corp. 2019,2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
5
5
 
6
6
  export * from './address.repository';
7
7
  export * from './cart-item.repository';
8
+ export * from './contact.repository';
8
9
  export * from './customer-cart-item-link.repository';
10
+ export * from './customer-promotion-link.repository';
9
11
  export * from './customer.repository';
10
12
  export * from './order.repository';
13
+ export * from './payment-method.repository';
14
+ export * from './promotion.repository';
11
15
  export * from './shipment.repository';
12
- export * from './user.repository';
16
+ export * from './supplier.repository';
13
17
  export * from './user-link.repository';
18
+ export * from './user.repository';
@@ -1,4 +1,4 @@
1
- // Copyright IBM Corp. 2019,2020. All Rights Reserved.
1
+ // Copyright IBM Corp. and LoopBack contributors 2019,2020. All Rights Reserved.
2
2
  // Node module: @loopback/repository-tests
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT