Browse Source

refactor(core): Use TransactionConnection with FacetValueChecker

Michael Bromley 5 years ago
parent
commit
1ca60ba287

+ 2 - 1
packages/core/src/config/promotion/actions/facet-values-discount-action.ts

@@ -1,5 +1,6 @@
 import { LanguageCode } from '@vendure/common/lib/generated-types';
 
+import { TransactionalConnection } from '../../../service/transaction/transactional-connection';
 import { PromotionItemAction } from '../promotion-action';
 import { FacetValueChecker } from '../utils/facet-value-checker';
 
@@ -22,7 +23,7 @@ export const discountOnItemWithFacets = new PromotionItemAction({
         },
     },
     init(injector) {
-        facetValueChecker = new FacetValueChecker(injector.getConnection());
+        facetValueChecker = new FacetValueChecker(injector.get(TransactionalConnection));
     },
     async execute(orderItem, orderLine, args) {
         if (await facetValueChecker.hasFacetValues(orderLine, args.facets)) {

+ 1 - 3
packages/core/src/config/promotion/conditions/contains-products-condition.ts

@@ -1,10 +1,8 @@
 import { LanguageCode } from '@vendure/common/lib/generated-types';
 import { ID } from '@vendure/common/lib/shared-types';
 
-import { RequestContext } from '../../../api/common/request-context';
 import { idsAreEqual } from '../../../common/utils';
 import { OrderLine } from '../../../entity/order-line/order-line.entity';
-import { Order } from '../../../entity/order/order.entity';
 import { PromotionCondition } from '../promotion-condition';
 
 export const containsProducts = new PromotionCondition({
@@ -21,7 +19,7 @@ export const containsProducts = new PromotionCondition({
             label: [{ languageCode: LanguageCode.en, value: 'Product variants' }],
         },
     },
-    async check(ctx: RequestContext, order: Order, args) {
+    async check(ctx, order, args) {
         const ids = args.productVariantIds;
         let matches = 0;
         for (const line of order.lines) {

+ 1 - 3
packages/core/src/config/promotion/conditions/customer-group-condition.ts

@@ -1,10 +1,8 @@
 import { LanguageCode } from '@vendure/common/lib/generated-types';
 import { ID } from '@vendure/common/lib/shared-types';
 
-import { RequestContext } from '../../../api/common/request-context';
 import { TtlCache } from '../../../common/ttl-cache';
 import { idsAreEqual } from '../../../common/utils';
-import { Order } from '../../../entity/order/order.entity';
 import { PromotionCondition } from '../promotion-condition';
 
 let customerService: import('../../../service/services/customer.service').CustomerService;
@@ -27,7 +25,7 @@ export const customerGroup = new PromotionCondition({
         const { CustomerService } = await import('../../../service/services/customer.service');
         customerService = injector.get(CustomerService);
     },
-    async check(ctx: RequestContext, order: Order, args) {
+    async check(ctx, order, args) {
         if (!order.customer) {
             return false;
         }

+ 3 - 4
packages/core/src/config/promotion/conditions/has-facet-values-condition.ts

@@ -1,7 +1,6 @@
 import { LanguageCode } from '@vendure/common/lib/generated-types';
 
-import { RequestContext } from '../../../api/common/request-context';
-import { Order } from '../../../entity/order/order.entity';
+import { TransactionalConnection } from '../../../service/transaction/transactional-connection';
 import { PromotionCondition } from '../promotion-condition';
 import { FacetValueChecker } from '../utils/facet-value-checker';
 
@@ -17,10 +16,10 @@ export const hasFacetValues = new PromotionCondition({
         facets: { type: 'ID', list: true, ui: { component: 'facet-value-form-input' } },
     },
     init(injector) {
-        facetValueChecker = new FacetValueChecker(injector.getConnection());
+        facetValueChecker = new FacetValueChecker(injector.get(TransactionalConnection));
     },
     // tslint:disable-next-line:no-shadowed-variable
-    async check(ctx: RequestContext, order: Order, args) {
+    async check(ctx, order, args) {
         let matches = 0;
         for (const line of order.lines) {
             if (await facetValueChecker.hasFacetValues(line, args.facets)) {

+ 1 - 3
packages/core/src/config/promotion/conditions/min-order-amount-condition.ts

@@ -1,7 +1,5 @@
 import { LanguageCode } from '@vendure/common/lib/generated-types';
 
-import { RequestContext } from '../../../api/common/request-context';
-import { Order } from '../../../entity/order/order.entity';
 import { PromotionCondition } from '../promotion-condition';
 
 export const minimumOrderAmount = new PromotionCondition({
@@ -14,7 +12,7 @@ export const minimumOrderAmount = new PromotionCondition({
         },
         taxInclusive: { type: 'boolean' },
     },
-    check(ctx: RequestContext, order: Order, args) {
+    check(ctx, order, args) {
         if (args.taxInclusive) {
             return order.subTotal >= args.amount;
         } else {

+ 2 - 2
packages/core/src/config/promotion/utils/facet-value-checker.ts

@@ -1,16 +1,16 @@
 import { ID } from '@vendure/common/lib/shared-types';
 import { unique } from '@vendure/common/lib/unique';
-import { Connection } from 'typeorm';
 
 import { TtlCache } from '../../../common/ttl-cache';
 import { idsAreEqual } from '../../../common/utils';
 import { OrderLine } from '../../../entity/order-line/order-line.entity';
 import { ProductVariant } from '../../../entity/product-variant/product-variant.entity';
+import { TransactionalConnection } from '../../../service/transaction/transactional-connection';
 
 export class FacetValueChecker {
     private variantCache = new TtlCache<ID, ProductVariant>({ ttl: 5000 });
 
-    constructor(private connection: Connection) {}
+    constructor(private connection: TransactionalConnection) {}
     /**
      * @description
      * Checks a given {@link OrderLine} against the facetValueIds and returns