app.module.ts 2.5 KB

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