app.module.ts 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 { AdministratorService } from './service/administrator.service';
  15. import { CustomerService } from './service/customer.service';
  16. import { ProductOptionService } from './service/product-option.service';
  17. import { ProductVariantService } from './service/product-variant.service';
  18. import { ProductService } from './service/product.service';
  19. @Module({
  20. imports: [
  21. GraphQLModule,
  22. TypeOrmModule.forRoot({
  23. type: 'mysql',
  24. entities: ['./**/entity/**/*.entity.ts'],
  25. synchronize: true,
  26. logging: true,
  27. host: '192.168.99.100',
  28. port: 3306,
  29. username: 'root',
  30. password: '',
  31. database: 'test',
  32. }),
  33. ],
  34. controllers: [AuthController, CustomerController],
  35. providers: [
  36. AdministratorResolver,
  37. AdministratorService,
  38. AuthService,
  39. JwtStrategy,
  40. PasswordService,
  41. CustomerService,
  42. CustomerResolver,
  43. ProductService,
  44. ProductOptionResolver,
  45. ProductOptionService,
  46. ProductVariantService,
  47. ProductResolver,
  48. PasswordService,
  49. ],
  50. })
  51. export class AppModule implements NestModule {
  52. constructor(private readonly graphQLFactory: GraphQLFactory) {}
  53. configure(consumer: MiddlewareConsumer) {
  54. const schema = this.createSchema();
  55. consumer
  56. .apply(
  57. graphiqlExpress({
  58. endpointURL: '/graphql',
  59. subscriptionsEndpoint: `ws://localhost:3001/subscriptions`,
  60. }),
  61. )
  62. .forRoutes('/graphiql')
  63. .apply(graphqlExpress(req => ({ schema, rootValue: req })))
  64. .forRoutes('/graphql');
  65. }
  66. createSchema() {
  67. const typeDefs = this.graphQLFactory.mergeTypesByPaths('./**/*.graphql');
  68. return this.graphQLFactory.createSchema({ typeDefs });
  69. }
  70. }