Browse Source

refactor(server): Use Nest's onModuleInit hook to run service setup

Michael Bromley 7 years ago
parent
commit
d300978c1d

+ 1 - 2
server/src/service/helpers/order-calculator/order-calculator.spec.ts

@@ -46,8 +46,7 @@ describe('OrderCalculator', () => {
             taxZoneStrategy: new DefaultTaxZoneStrategy(),
             taxCalculationStrategy: new DefaultTaxCalculationStrategy(),
         };
-        const taxRateService = module.get(TaxRateService);
-        await taxRateService.initTaxRates();
+        await module.init();
     });
 
     function createOrder(

+ 1 - 3
server/src/service/helpers/tax-calculator/tax-calculator.spec.ts

@@ -37,14 +37,12 @@ describe('TaxCalculator', () => {
                 { provide: ListQueryBuilder, useValue: {} },
             ],
         }).compile();
-
         taxCalculator = module.get(TaxCalculator);
-        const taxRateService = module.get(TaxRateService);
         const mockConfigService = module.get<ConfigService, MockConfigService>(ConfigService);
         mockConfigService.taxOptions = {
             taxCalculationStrategy: new DefaultTaxCalculationStrategy(),
         };
-        await taxRateService.initTaxRates();
+        await module.init();
     });
 
     describe('with prices which do not include tax', () => {

+ 2 - 20
server/src/service/service.module.ts

@@ -1,4 +1,4 @@
-import { Module, OnModuleInit } from '@nestjs/common';
+import { Module } from '@nestjs/common';
 import { TypeOrmModule } from '@nestjs/typeorm';
 
 import { getConfig } from '../config/config-helpers';
@@ -87,22 +87,4 @@ const exportedProviders = [
     ],
     exports: exportedProviders,
 })
-export class ServiceModule implements OnModuleInit {
-    constructor(
-        private channelService: ChannelService,
-        private roleService: RoleService,
-        private administratorService: AdministratorService,
-        private taxRateService: TaxRateService,
-        private shippingMethodService: ShippingMethodService,
-        private paymentMethodService: PaymentMethodService,
-    ) {}
-
-    async onModuleInit() {
-        await this.channelService.initChannels();
-        await this.roleService.initRoles();
-        await this.administratorService.initAdministrators();
-        await this.taxRateService.initTaxRates();
-        await this.shippingMethodService.initShippingMethods();
-        await this.paymentMethodService.initPaymentMethods();
-    }
-}
+export class ServiceModule {}

+ 3 - 3
server/src/service/services/administrator.service.ts

@@ -1,4 +1,4 @@
-import { Injectable } from '@nestjs/common';
+import { Injectable, OnModuleInit } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from 'typeorm';
 
@@ -17,7 +17,7 @@ import { RoleService } from './role.service';
 import { UserService } from './user.service';
 
 @Injectable()
-export class AdministratorService {
+export class AdministratorService implements OnModuleInit {
     constructor(
         @InjectConnection() private connection: Connection,
         private listQueryBuilder: ListQueryBuilder,
@@ -26,7 +26,7 @@ export class AdministratorService {
         private roleService: RoleService,
     ) {}
 
-    async initAdministrators() {
+    async onModuleInit() {
         await this.ensureSuperAdminExists();
     }
 

+ 3 - 3
server/src/service/services/channel.service.ts

@@ -1,4 +1,4 @@
-import { Injectable } from '@nestjs/common';
+import { Injectable, OnModuleInit } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from 'typeorm';
 
@@ -18,7 +18,7 @@ import { getEntityOrThrow } from '../helpers/utils/get-entity-or-throw';
 import { patchEntity } from '../helpers/utils/patch-entity';
 
 @Injectable()
-export class ChannelService {
+export class ChannelService implements OnModuleInit {
     private allChannels: Channel[] = [];
 
     constructor(@InjectConnection() private connection: Connection, private configService: ConfigService) {}
@@ -27,7 +27,7 @@ export class ChannelService {
      * When the app is bootstrapped, ensure a default Channel exists and populate the
      * channel lookup array.
      */
-    async initChannels() {
+    async onModuleInit() {
         await this.ensureDefaultChannelExists();
         await this.updateAllChannels();
     }

+ 3 - 3
server/src/service/services/payment-method.service.ts

@@ -1,4 +1,4 @@
-import { Injectable } from '@nestjs/common';
+import { Injectable, OnModuleInit } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from 'typeorm';
 
@@ -22,14 +22,14 @@ import { getEntityOrThrow } from '../helpers/utils/get-entity-or-throw';
 import { patchEntity } from '../helpers/utils/patch-entity';
 
 @Injectable()
-export class PaymentMethodService {
+export class PaymentMethodService implements OnModuleInit {
     constructor(
         @InjectConnection() private connection: Connection,
         private configService: ConfigService,
         private listQueryBuilder: ListQueryBuilder,
     ) {}
 
-    async initPaymentMethods() {
+    async onModuleInit() {
         await this.ensurePaymentMethodsExist();
     }
 

+ 3 - 3
server/src/service/services/role.service.ts

@@ -1,4 +1,4 @@
-import { Injectable } from '@nestjs/common';
+import { Injectable, OnModuleInit } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from 'typeorm';
 
@@ -20,14 +20,14 @@ import { patchEntity } from '../helpers/utils/patch-entity';
 import { ChannelService } from './channel.service';
 
 @Injectable()
-export class RoleService {
+export class RoleService implements OnModuleInit {
     constructor(
         @InjectConnection() private connection: Connection,
         private channelService: ChannelService,
         private listQueryBuilder: ListQueryBuilder,
     ) {}
 
-    async initRoles() {
+    async onModuleInit() {
         await this.ensureSuperAdminRoleExists();
         await this.ensureCustomerRoleExists();
     }

+ 3 - 3
server/src/service/services/shipping-method.service.ts

@@ -1,4 +1,4 @@
-import { Injectable } from '@nestjs/common';
+import { Injectable, OnModuleInit } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from 'typeorm';
 
@@ -24,7 +24,7 @@ import { patchEntity } from '../helpers/utils/patch-entity';
 import { ChannelService } from './channel.service';
 
 @Injectable()
-export class ShippingMethodService {
+export class ShippingMethodService implements OnModuleInit {
     shippingEligibilityCheckers: ShippingEligibilityChecker[];
     shippingCalculators: ShippingCalculator[];
     private activeShippingMethods: ShippingMethod[];
@@ -40,7 +40,7 @@ export class ShippingMethodService {
         this.shippingCalculators = this.configService.shippingOptions.shippingCalculators || [];
     }
 
-    async initShippingMethods() {
+    async onModuleInit() {
         await this.updateActiveShippingMethods();
     }
 

+ 3 - 2
server/src/service/services/tax-rate.service.ts

@@ -1,3 +1,4 @@
+import { OnModuleInit } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
 import { Connection } from 'typeorm';
 
@@ -14,7 +15,7 @@ import { ListQueryBuilder } from '../helpers/list-query-builder/list-query-build
 import { getEntityOrThrow } from '../helpers/utils/get-entity-or-throw';
 import { patchEntity } from '../helpers/utils/patch-entity';
 
-export class TaxRateService {
+export class TaxRateService implements OnModuleInit {
     /**
      * We cache all active TaxRates to avoid hitting the DB many times
      * per request.
@@ -32,7 +33,7 @@ export class TaxRateService {
         private listQueryBuilder: ListQueryBuilder,
     ) {}
 
-    async initTaxRates() {
+    async onModuleInit() {
         return this.updateActiveTaxRates();
     }