api.module.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { Module } from '@nestjs/common';
  2. import { APP_GUARD } from '@nestjs/core';
  3. import { GraphQLModule } from '@nestjs/graphql';
  4. import { ConfigModule } from '../config/config.module';
  5. import { I18nModule } from '../i18n/i18n.module';
  6. import { ServiceModule } from '../service/service.module';
  7. import { AdministratorResolver } from './administrator/administrator.resolver';
  8. import { AuthGuard } from './auth-guard';
  9. import { AuthResolver } from './auth/auth.resolver';
  10. import { ChannelResolver } from './channel/channel.resolver';
  11. import { RequestContextService } from './common/request-context.service';
  12. import { ConfigResolver } from './config/config.resolver';
  13. import { CustomerResolver } from './customer/customer.resolver';
  14. import { FacetResolver } from './facet/facet.resolver';
  15. import { GraphqlConfigService } from './graphql-config.service';
  16. import { JwtStrategy } from './jwt.strategy';
  17. import { ProductOptionResolver } from './product-option/product-option.resolver';
  18. import { ProductResolver } from './product/product.resolver';
  19. import { RoleResolver } from './role/role.resolver';
  20. import { RolesGuard } from './roles-guard';
  21. const exportedProviders = [
  22. AdministratorResolver,
  23. AuthResolver,
  24. ChannelResolver,
  25. ConfigResolver,
  26. FacetResolver,
  27. CustomerResolver,
  28. ProductOptionResolver,
  29. ProductResolver,
  30. RoleResolver,
  31. ];
  32. /**
  33. * The ApiModule is responsible for the public API of the application. This is where requests
  34. * come in, are parsed and then handed over to the ServiceModule classes which take care
  35. * of the business logic.
  36. */
  37. @Module({
  38. imports: [
  39. ServiceModule,
  40. GraphQLModule.forRootAsync({
  41. useClass: GraphqlConfigService,
  42. imports: [ConfigModule, I18nModule],
  43. }),
  44. ],
  45. providers: [
  46. ...exportedProviders,
  47. JwtStrategy,
  48. RequestContextService,
  49. {
  50. provide: APP_GUARD,
  51. useClass: AuthGuard,
  52. },
  53. {
  54. provide: APP_GUARD,
  55. useClass: RolesGuard,
  56. },
  57. ],
  58. exports: exportedProviders,
  59. })
  60. export class ApiModule {}