app.module.ts 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
  2. import { GraphQLFactory, GraphQLModule } from '@nestjs/graphql';
  3. import { TypeOrmModule } from '@nestjs/typeorm';
  4. import { graphiqlExpress, graphqlExpress } from 'apollo-server-express';
  5. import { AdministratorResolver } from './api/administrator/administrator.resolver';
  6. import { AuthController } from './api/auth/auth.controller';
  7. import { CustomerController } from './api/customer/customer.controller';
  8. import { CustomerResolver } from './api/customer/customer.resolver';
  9. import { ProductOptionResolver } from './api/product-option/product-option.resolver';
  10. import { ProductResolver } from './api/product/product.resolver';
  11. import { AuthService } from './auth/auth.service';
  12. import { JwtStrategy } from './auth/jwt.strategy';
  13. import { PasswordService } from './auth/password.service';
  14. import { getConfig } from './config/vendure-config';
  15. import { TranslationUpdaterService } from './locale/translation-updater.service';
  16. import { AdministratorService } from './service/administrator.service';
  17. import { ConfigService } from './service/config.service';
  18. import { CustomerService } from './service/customer.service';
  19. import { IdCodecService } from './service/id-codec.service';
  20. import { ProductOptionGroupService } from './service/product-option-group.service';
  21. import { ProductOptionService } from './service/product-option.service';
  22. import { ProductVariantService } from './service/product-variant.service';
  23. import { ProductService } from './service/product.service';
  24. const connectionOptions = getConfig().dbConnectionOptions;
  25. @Module({
  26. imports: [GraphQLModule, TypeOrmModule.forRoot(connectionOptions)],
  27. controllers: [AuthController, CustomerController],
  28. providers: [
  29. AdministratorResolver,
  30. AdministratorService,
  31. AuthService,
  32. ConfigService,
  33. JwtStrategy,
  34. IdCodecService,
  35. PasswordService,
  36. CustomerService,
  37. CustomerResolver,
  38. ProductService,
  39. ProductOptionResolver,
  40. ProductOptionService,
  41. ProductOptionGroupService,
  42. ProductVariantService,
  43. ProductResolver,
  44. PasswordService,
  45. TranslationUpdaterService,
  46. ],
  47. })
  48. export class AppModule implements NestModule {
  49. constructor(private readonly graphQLFactory: GraphQLFactory, private configService: ConfigService) {}
  50. configure(consumer: MiddlewareConsumer) {
  51. const schema = this.createSchema();
  52. consumer
  53. .apply(
  54. graphiqlExpress({
  55. endpointURL: this.configService.apiPath,
  56. subscriptionsEndpoint: `ws://localhost:3001/subscriptions`,
  57. }),
  58. )
  59. .forRoutes('/graphiql')
  60. .apply(graphqlExpress(req => ({ schema, rootValue: req })))
  61. .forRoutes(this.configService.apiPath);
  62. }
  63. createSchema() {
  64. const typeDefs = this.graphQLFactory.mergeTypesByPaths(__dirname + '/**/*.graphql');
  65. return this.graphQLFactory.createSchema({
  66. typeDefs,
  67. resolverValidationOptions: {
  68. requireResolversForResolveType: false,
  69. },
  70. });
  71. }
  72. }