api.module.ts 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 { CountryResolver } from './resolvers/country.resolver';
  20. import { CustomerGroupResolver } from './resolvers/customer-group.resolver';
  21. import { CustomerResolver } from './resolvers/customer.resolver';
  22. import { FacetResolver } from './resolvers/facet.resolver';
  23. import { GlobalSettingsResolver } from './resolvers/global-settings.resolver';
  24. import { ImportResolver } from './resolvers/import.resolver';
  25. import { OrderResolver } from './resolvers/order.resolver';
  26. import { PaymentMethodResolver } from './resolvers/payment-method.resolver';
  27. import { ProductCategoryResolver } from './resolvers/product-category.resolver';
  28. import { ProductOptionResolver } from './resolvers/product-option.resolver';
  29. import { ProductResolver } from './resolvers/product.resolver';
  30. import { PromotionResolver } from './resolvers/promotion.resolver';
  31. import { RoleResolver } from './resolvers/role.resolver';
  32. import { SearchResolver } from './resolvers/search.resolver';
  33. import { ShippingMethodResolver } from './resolvers/shipping-method.resolver';
  34. import { TaxCategoryResolver } from './resolvers/tax-category.resolver';
  35. import { TaxRateResolver } from './resolvers/tax-rate.resolver';
  36. import { ZoneResolver } from './resolvers/zone.resolver';
  37. const resolvers = [
  38. AdministratorResolver,
  39. AssetResolver,
  40. AuthResolver,
  41. ChannelResolver,
  42. CountryResolver,
  43. CustomerGroupResolver,
  44. CustomerResolver,
  45. FacetResolver,
  46. GlobalSettingsResolver,
  47. ImportResolver,
  48. OrderResolver,
  49. PaymentMethodResolver,
  50. ProductCategoryResolver,
  51. ProductOptionResolver,
  52. ProductResolver,
  53. PromotionResolver,
  54. RoleResolver,
  55. SearchResolver,
  56. ShippingMethodResolver,
  57. TaxCategoryResolver,
  58. TaxRateResolver,
  59. ZoneResolver,
  60. ];
  61. /**
  62. * The ApiModule is responsible for the public API of the application. This is where requests
  63. * come in, are parsed and then handed over to the ServiceModule classes which take care
  64. * of the business logic.
  65. */
  66. @Module({
  67. imports: [
  68. ServiceModule,
  69. DataImportModule,
  70. GraphQLModule.forRootAsync({
  71. useClass: GraphqlConfigService,
  72. imports: [ConfigModule, I18nModule],
  73. }),
  74. PluginModule,
  75. ],
  76. providers: [
  77. ...resolvers,
  78. RequestContextService,
  79. IdCodecService,
  80. {
  81. provide: APP_GUARD,
  82. useClass: AuthGuard,
  83. },
  84. {
  85. provide: APP_INTERCEPTOR,
  86. useClass: AssetInterceptor,
  87. },
  88. {
  89. provide: APP_INTERCEPTOR,
  90. useClass: IdInterceptor,
  91. },
  92. ],
  93. })
  94. export class ApiModule {}