service.module.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { Module, OnModuleInit } from '@nestjs/common';
  2. import { TypeOrmModule } from '@nestjs/typeorm';
  3. import { ConfigModule } from '../config/config.module';
  4. import { getConfig } from '../config/vendure-config';
  5. import { ListQueryBuilder } from './helpers/list-query-builder/list-query-builder';
  6. import { OrderCalculator } from './helpers/order-calculator/order-calculator';
  7. import { PasswordCiper } from './helpers/password-cipher/password-ciper';
  8. import { TaxCalculator } from './helpers/tax-calculator/tax-calculator';
  9. import { TranslatableSaver } from './helpers/translatable-saver/translatable-saver';
  10. import { AdministratorService } from './services/administrator.service';
  11. import { AssetService } from './services/asset.service';
  12. import { AuthService } from './services/auth.service';
  13. import { ChannelService } from './services/channel.service';
  14. import { CountryService } from './services/country.service';
  15. import { CustomerGroupService } from './services/customer-group.service';
  16. import { CustomerService } from './services/customer.service';
  17. import { FacetValueService } from './services/facet-value.service';
  18. import { FacetService } from './services/facet.service';
  19. import { OrderService } from './services/order.service';
  20. import { ProductOptionGroupService } from './services/product-option-group.service';
  21. import { ProductOptionService } from './services/product-option.service';
  22. import { ProductVariantService } from './services/product-variant.service';
  23. import { ProductService } from './services/product.service';
  24. import { PromotionService } from './services/promotion.service';
  25. import { RoleService } from './services/role.service';
  26. import { TaxCategoryService } from './services/tax-category.service';
  27. import { TaxRateService } from './services/tax-rate.service';
  28. import { ZoneService } from './services/zone.service';
  29. const exportedProviders = [
  30. PromotionService,
  31. AdministratorService,
  32. AssetService,
  33. AuthService,
  34. ChannelService,
  35. CountryService,
  36. CustomerGroupService,
  37. CustomerService,
  38. FacetService,
  39. FacetValueService,
  40. OrderService,
  41. ProductOptionService,
  42. ProductOptionGroupService,
  43. ProductService,
  44. ProductVariantService,
  45. RoleService,
  46. TaxCategoryService,
  47. TaxRateService,
  48. ZoneService,
  49. ];
  50. /**
  51. * The ServiceModule is responsible for the service layer, i.e. accessing the database
  52. * and implementing the main business logic of the application.
  53. *
  54. * The exported providers are used in the ApiModule, which is responsible for parsing requests
  55. * into a format suitable for the service layer logic.
  56. */
  57. @Module({
  58. imports: [ConfigModule, TypeOrmModule.forRoot(getConfig().dbConnectionOptions)],
  59. providers: [
  60. ...exportedProviders,
  61. PasswordCiper,
  62. TranslatableSaver,
  63. TaxCalculator,
  64. OrderCalculator,
  65. ListQueryBuilder,
  66. ],
  67. exports: exportedProviders,
  68. })
  69. export class ServiceModule implements OnModuleInit {
  70. constructor(
  71. private channelService: ChannelService,
  72. private roleService: RoleService,
  73. private administratorService: AdministratorService,
  74. private taxRateService: TaxRateService,
  75. ) {}
  76. async onModuleInit() {
  77. await this.channelService.initChannels();
  78. await this.roleService.initRoles();
  79. await this.administratorService.initAdministrators();
  80. await this.taxRateService.initTaxRates();
  81. }
  82. }