api.module.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import { Module } from '@nestjs/common';
  2. import { APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core';
  3. import { GraphQLModule } from '@nestjs/graphql';
  4. import { ConfigModule } from '../config/config.module';
  5. import { DataImportModule } from '../data-import/data-import.module';
  6. import { I18nModule } from '../i18n/i18n.module';
  7. import { PluginModule } from '../plugin/plugin.module';
  8. import { ServiceModule } from '../service/service.module';
  9. import { IdCodecService } from './common/id-codec.service';
  10. import { RequestContextService } from './common/request-context.service';
  11. import { GraphqlConfigService } from './config/graphql-config.service';
  12. import { AssetInterceptor } from './middleware/asset-interceptor';
  13. import { AuthGuard } from './middleware/auth-guard';
  14. import { IdInterceptor } from './middleware/id-interceptor';
  15. import { AdministratorResolver } from './resolvers/administrator.resolver';
  16. import { AssetResolver } from './resolvers/asset.resolver';
  17. import { AuthResolver } from './resolvers/auth.resolver';
  18. import { ChannelResolver } from './resolvers/channel.resolver';
  19. import { ConfigResolver } from './resolvers/config.resolver';
  20. import { CountryResolver } from './resolvers/country.resolver';
  21. import { CustomerGroupResolver } from './resolvers/customer-group.resolver';
  22. import { CustomerResolver } from './resolvers/customer.resolver';
  23. import { FacetResolver } from './resolvers/facet.resolver';
  24. import { GlobalSettingsResolver } from './resolvers/global-settings.resolver';
  25. import { ImportResolver } from './resolvers/import.resolver';
  26. import { OrderResolver } from './resolvers/order.resolver';
  27. import { PaymentMethodResolver } from './resolvers/payment-method.resolver';
  28. import { ProductCategoryResolver } from './resolvers/product-category.resolver';
  29. import { ProductOptionResolver } from './resolvers/product-option.resolver';
  30. import { ProductResolver } from './resolvers/product.resolver';
  31. import { PromotionResolver } from './resolvers/promotion.resolver';
  32. import { RoleResolver } from './resolvers/role.resolver';
  33. import { SearchResolver } from './resolvers/search.resolver';
  34. import { ShippingMethodResolver } from './resolvers/shipping-method.resolver';
  35. import { TaxCategoryResolver } from './resolvers/tax-category.resolver';
  36. import { TaxRateResolver } from './resolvers/tax-rate.resolver';
  37. import { ZoneResolver } from './resolvers/zone.resolver';
  38. const resolvers = [
  39. PromotionResolver,
  40. AdministratorResolver,
  41. AuthResolver,
  42. AssetResolver,
  43. ChannelResolver,
  44. ConfigResolver,
  45. CountryResolver,
  46. FacetResolver,
  47. ImportResolver,
  48. CustomerResolver,
  49. CustomerGroupResolver,
  50. OrderResolver,
  51. PaymentMethodResolver,
  52. ProductOptionResolver,
  53. ProductResolver,
  54. ProductCategoryResolver,
  55. RoleResolver,
  56. SearchResolver,
  57. ShippingMethodResolver,
  58. TaxCategoryResolver,
  59. TaxRateResolver,
  60. ZoneResolver,
  61. GlobalSettingsResolver,
  62. ];
  63. /**
  64. * The ApiModule is responsible for the public API of the application. This is where requests
  65. * come in, are parsed and then handed over to the ServiceModule classes which take care
  66. * of the business logic.
  67. */
  68. @Module({
  69. imports: [
  70. ServiceModule,
  71. DataImportModule,
  72. GraphQLModule.forRootAsync({
  73. useClass: GraphqlConfigService,
  74. imports: [ConfigModule, I18nModule],
  75. }),
  76. PluginModule,
  77. ],
  78. providers: [
  79. ...resolvers,
  80. RequestContextService,
  81. IdCodecService,
  82. {
  83. provide: APP_GUARD,
  84. useClass: AuthGuard,
  85. },
  86. {
  87. provide: APP_INTERCEPTOR,
  88. useClass: AssetInterceptor,
  89. },
  90. {
  91. provide: APP_INTERCEPTOR,
  92. useClass: IdInterceptor,
  93. },
  94. ],
  95. })
  96. export class ApiModule {}