@loopback/repository-tests 0.20.2 → 0.21.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 (92) hide show
  1. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.d.ts +2 -0
  2. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.js +170 -0
  3. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.js.map +1 -0
  4. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.d.ts +2 -0
  5. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.js +55 -0
  6. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.js.map +1 -0
  7. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.d.ts +2 -0
  8. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.js +170 -0
  9. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.js.map +1 -0
  10. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.d.ts +2 -0
  11. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.js +361 -0
  12. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.js.map +1 -0
  13. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.d.ts +2 -0
  14. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.js +161 -0
  15. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.js.map +1 -0
  16. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.d.ts +2 -0
  17. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.js +190 -0
  18. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.js.map +1 -0
  19. package/dist/crud/relations/fixtures/models/contact.model.d.ts +18 -0
  20. package/dist/crud/relations/fixtures/models/contact.model.js +49 -0
  21. package/dist/crud/relations/fixtures/models/contact.model.js.map +1 -0
  22. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.d.ts +14 -0
  23. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.js +46 -0
  24. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.js.map +1 -0
  25. package/dist/crud/relations/fixtures/models/customer.model.d.ts +16 -3
  26. package/dist/crud/relations/fixtures/models/customer.model.js +27 -9
  27. package/dist/crud/relations/fixtures/models/customer.model.js.map +1 -1
  28. package/dist/crud/relations/fixtures/models/index.d.ts +6 -0
  29. package/dist/crud/relations/fixtures/models/index.js +6 -0
  30. package/dist/crud/relations/fixtures/models/index.js.map +1 -1
  31. package/dist/crud/relations/fixtures/models/payment-method.model.d.ts +47 -0
  32. package/dist/crud/relations/fixtures/models/payment-method.model.js +87 -0
  33. package/dist/crud/relations/fixtures/models/payment-method.model.js.map +1 -0
  34. package/dist/crud/relations/fixtures/models/promotion.model.d.ts +27 -0
  35. package/dist/crud/relations/fixtures/models/promotion.model.js +54 -0
  36. package/dist/crud/relations/fixtures/models/promotion.model.js.map +1 -0
  37. package/dist/crud/relations/fixtures/models/stakeholder.model.d.ts +7 -0
  38. package/dist/crud/relations/fixtures/models/stakeholder.model.js +38 -0
  39. package/dist/crud/relations/fixtures/models/stakeholder.model.js.map +1 -0
  40. package/dist/crud/relations/fixtures/models/supplier.model.d.ts +15 -0
  41. package/dist/crud/relations/fixtures/models/supplier.model.js +23 -0
  42. package/dist/crud/relations/fixtures/models/supplier.model.js.map +1 -0
  43. package/dist/crud/relations/fixtures/repositories/contact.repository.d.ts +30 -0
  44. package/dist/crud/relations/fixtures/repositories/contact.repository.js +21 -0
  45. package/dist/crud/relations/fixtures/repositories/contact.repository.js.map +1 -0
  46. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.d.ts +26 -0
  47. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.js +18 -0
  48. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.js.map +1 -0
  49. package/dist/crud/relations/fixtures/repositories/customer.repository.d.ts +9 -2
  50. package/dist/crud/relations/fixtures/repositories/customer.repository.js +7 -1
  51. package/dist/crud/relations/fixtures/repositories/customer.repository.js.map +1 -1
  52. package/dist/crud/relations/fixtures/repositories/index.d.ts +6 -1
  53. package/dist/crud/relations/fixtures/repositories/index.js +6 -1
  54. package/dist/crud/relations/fixtures/repositories/index.js.map +1 -1
  55. package/dist/crud/relations/fixtures/repositories/payment-method.repository.d.ts +77 -0
  56. package/dist/crud/relations/fixtures/repositories/payment-method.repository.js +45 -0
  57. package/dist/crud/relations/fixtures/repositories/payment-method.repository.js.map +1 -0
  58. package/dist/crud/relations/fixtures/repositories/promotion.repository.d.ts +49 -0
  59. package/dist/crud/relations/fixtures/repositories/promotion.repository.js +25 -0
  60. package/dist/crud/relations/fixtures/repositories/promotion.repository.js.map +1 -0
  61. package/dist/crud/relations/fixtures/repositories/supplier.repository.d.ts +28 -0
  62. package/dist/crud/relations/fixtures/repositories/supplier.repository.js +21 -0
  63. package/dist/crud/relations/fixtures/repositories/supplier.repository.js.map +1 -0
  64. package/dist/crud/relations/helpers.d.ts +9 -1
  65. package/dist/crud/relations/helpers.js +85 -10
  66. package/dist/crud/relations/helpers.js.map +1 -1
  67. package/dist/helpers.repository-tests.d.ts +1 -1
  68. package/dist/helpers.repository-tests.js.map +1 -1
  69. package/package.json +12 -12
  70. package/src/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.ts +221 -0
  71. package/src/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.ts +88 -0
  72. package/src/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.ts +255 -0
  73. package/src/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.ts +494 -0
  74. package/src/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.ts +208 -0
  75. package/src/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.ts +328 -0
  76. package/src/crud/relations/fixtures/models/contact.model.ts +56 -0
  77. package/src/crud/relations/fixtures/models/customer-promotion-link.model.ts +52 -0
  78. package/src/crud/relations/fixtures/models/customer.model.ts +39 -9
  79. package/src/crud/relations/fixtures/models/index.ts +6 -0
  80. package/src/crud/relations/fixtures/models/payment-method.model.ts +118 -0
  81. package/src/crud/relations/fixtures/models/promotion.model.ts +67 -0
  82. package/src/crud/relations/fixtures/models/stakeholder.model.ts +33 -0
  83. package/src/crud/relations/fixtures/models/supplier.model.ts +35 -0
  84. package/src/crud/relations/fixtures/repositories/contact.repository.ts +44 -0
  85. package/src/crud/relations/fixtures/repositories/customer-promotion-link.repository.ts +20 -0
  86. package/src/crud/relations/fixtures/repositories/customer.repository.ts +47 -0
  87. package/src/crud/relations/fixtures/repositories/index.ts +6 -1
  88. package/src/crud/relations/fixtures/repositories/payment-method.repository.ts +118 -0
  89. package/src/crud/relations/fixtures/repositories/promotion.repository.ts +37 -0
  90. package/src/crud/relations/fixtures/repositories/supplier.repository.ts +40 -0
  91. package/src/crud/relations/helpers.ts +200 -30
  92. package/src/helpers.repository-tests.ts +1 -1
@@ -0,0 +1,67 @@
1
+ // Copyright IBM Corp. 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> {}
@@ -0,0 +1,33 @@
1
+ // Copyright IBM Corp. 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. 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
+ }
@@ -0,0 +1,44 @@
1
+ // Copyright IBM Corp. 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
+ }
@@ -0,0 +1,20 @@
1
+ // Copyright IBM Corp. 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
+ }
@@ -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
  }
@@ -5,9 +5,14 @@
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';
@@ -0,0 +1,118 @@
1
+ // Copyright IBM Corp. 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
+ createHasOneRepositoryFactory,
12
+ HasOneDefinition,
13
+ HasOneRepositoryFactory,
14
+ juggler,
15
+ } from '@loopback/repository';
16
+ import {CrudRepositoryCtor} from '../../../..';
17
+ import {
18
+ CardInfo,
19
+ CardInfoRelations,
20
+ Cash,
21
+ CashRelations,
22
+ CreditCard,
23
+ CreditCardRelations,
24
+ Customer,
25
+ } from '../models';
26
+
27
+ export function createCreditCardRepo(repoClass: CrudRepositoryCtor) {
28
+ return class CreditCardRepository extends repoClass<
29
+ CreditCard,
30
+ typeof CreditCard.prototype.id,
31
+ CreditCardRelations
32
+ > {
33
+ public readonly customer: BelongsToAccessor<
34
+ Customer,
35
+ typeof CreditCard.prototype.id
36
+ >;
37
+
38
+ public readonly cardInfo: HasOneRepositoryFactory<
39
+ CardInfo,
40
+ typeof CreditCard.prototype.id
41
+ >;
42
+
43
+ constructor(
44
+ db: juggler.DataSource,
45
+ customerRepositoryGetter: Getter<typeof repoClass.prototype>,
46
+ cardInfoRepositoryGetter: Getter<typeof repoClass.prototype>,
47
+ ) {
48
+ super(CreditCard, db);
49
+ // create a belongsto relation from this public method
50
+ const customerMeta = this.entityClass.definition.relations['customer'];
51
+ this.customer = createBelongsToAccessor(
52
+ customerMeta as BelongsToDefinition,
53
+ customerRepositoryGetter,
54
+ this,
55
+ );
56
+ const cardInfoMeta = this.entityClass.definition.relations['cardInfo'];
57
+ this.cardInfo = createHasOneRepositoryFactory(
58
+ cardInfoMeta as HasOneDefinition,
59
+ cardInfoRepositoryGetter,
60
+ );
61
+ }
62
+ };
63
+ }
64
+
65
+ export function createCashRepo(repoClass: CrudRepositoryCtor) {
66
+ return class CashRepository extends repoClass<
67
+ Cash,
68
+ typeof Cash.prototype.id,
69
+ CashRelations
70
+ > {
71
+ public readonly customer: BelongsToAccessor<
72
+ Customer,
73
+ typeof Cash.prototype.id
74
+ >;
75
+
76
+ constructor(
77
+ db: juggler.DataSource,
78
+ customerRepositoryGetter: Getter<typeof repoClass.prototype>,
79
+ ) {
80
+ super(Cash, db);
81
+ // create a belongsto relation from this public method
82
+ const customerMeta = this.entityClass.definition.relations['customer'];
83
+ this.customer = createBelongsToAccessor(
84
+ customerMeta as BelongsToDefinition,
85
+ customerRepositoryGetter,
86
+ this,
87
+ );
88
+ }
89
+ };
90
+ }
91
+
92
+ export function createCardInfoRepo(repoClass: CrudRepositoryCtor) {
93
+ return class CardInfoRepository extends repoClass<
94
+ CardInfo,
95
+ typeof CardInfo.prototype.id,
96
+ CardInfoRelations
97
+ > {
98
+ public readonly creditCard: BelongsToAccessor<
99
+ CreditCard,
100
+ typeof CardInfo.prototype.id
101
+ >;
102
+
103
+ constructor(
104
+ db: juggler.DataSource,
105
+ creditCardRepositoryGetter: Getter<typeof repoClass.prototype>,
106
+ ) {
107
+ super(CardInfo, db);
108
+ // create a belongsto relation from this public method
109
+ const creditCardMeta =
110
+ this.entityClass.definition.relations['creditCard'];
111
+ this.creditCard = createBelongsToAccessor(
112
+ creditCardMeta as BelongsToDefinition,
113
+ creditCardRepositoryGetter,
114
+ this,
115
+ );
116
+ }
117
+ };
118
+ }
@@ -0,0 +1,37 @@
1
+ // Copyright IBM Corp. 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 {juggler} from '@loopback/repository';
7
+ import {CrudRepositoryCtor} from '../../../..';
8
+ import {
9
+ FreeDelivery,
10
+ FreeDeliveryRelations,
11
+ HalfPrice,
12
+ HalfPriceRelations,
13
+ } from '../models';
14
+
15
+ export function createFreeDeliveryRepo(repoClass: CrudRepositoryCtor) {
16
+ return class FreeDeliveryRepository extends repoClass<
17
+ FreeDelivery,
18
+ typeof FreeDelivery.prototype.id,
19
+ FreeDeliveryRelations
20
+ > {
21
+ constructor(db: juggler.DataSource) {
22
+ super(FreeDelivery, db);
23
+ }
24
+ };
25
+ }
26
+
27
+ export function createHalfPriceRepo(repoClass: CrudRepositoryCtor) {
28
+ return class HalfPriceRepository extends repoClass<
29
+ HalfPrice,
30
+ typeof HalfPrice.prototype.id,
31
+ HalfPriceRelations
32
+ > {
33
+ constructor(db: juggler.DataSource) {
34
+ super(HalfPrice, db);
35
+ }
36
+ };
37
+ }
@@ -0,0 +1,40 @@
1
+ // Copyright IBM Corp. 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 {Getter} from '@loopback/core';
7
+ import {
8
+ createHasOneRepositoryFactory,
9
+ HasOneDefinition,
10
+ HasOneRepositoryFactory,
11
+ juggler,
12
+ } from '@loopback/repository';
13
+ import {CrudRepositoryCtor} from '../../../../types.repository-tests';
14
+ import {Contact, Supplier, SupplierRelations} from '../models';
15
+
16
+ // create the SupplierRepo by calling this func so that it can be extended from CrudRepositoryCtor
17
+ export function createSupplierRepo(repoClass: CrudRepositoryCtor) {
18
+ return class SupplierRepository extends repoClass<
19
+ Supplier,
20
+ typeof Supplier.prototype.id,
21
+ SupplierRelations
22
+ > {
23
+ public readonly contact: HasOneRepositoryFactory<
24
+ Contact,
25
+ typeof Supplier.prototype.id
26
+ >;
27
+
28
+ constructor(
29
+ db: juggler.DataSource,
30
+ contactRepositoryGetter: Getter<typeof repoClass.prototype>,
31
+ ) {
32
+ super(Supplier, db);
33
+ const contactMeta = this.entityClass.definition.relations['contact'];
34
+ this.contact = createHasOneRepositoryFactory(
35
+ contactMeta as HasOneDefinition,
36
+ contactRepositoryGetter,
37
+ );
38
+ }
39
+ };
40
+ }