app.module.ts 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import { AliyunModule } from './aliyun/aliyun.module'
  2. import { Module } from '@nestjs/common'
  3. import { ConfigModule, ConfigService } from '@nestjs/config'
  4. import { TypeOrmModule } from '@nestjs/typeorm'
  5. import { AppController } from './app.controller'
  6. import { AppService } from './app.service'
  7. import { UsersModule } from './users/users.module'
  8. import { ThrottlerModule } from '@nestjs/throttler'
  9. import * as Yup from 'yup'
  10. import { SmsModule } from './sms/sms.module'
  11. import { DevtoolsModule } from '@nestjs/devtools-integration'
  12. import { AuthModule } from './auth/auth.module'
  13. import { FileModule } from './file/file.module'
  14. import { ChatModule } from './chat/chat.module'
  15. import { MembershipModule } from './membership/membership.module'
  16. import { WeixinModule } from './weixin/weixin.module'
  17. import { NotifyModule } from './notify/notify.module'
  18. import { CommissionModule } from './commission/commission.module'
  19. import { UserBalanceModule } from './user-balance/user-balance.module'
  20. import { WithdrawModule } from './withdraw/withdraw.module'
  21. import { SysConfigModule } from './sys-config/sys-config.module'
  22. import { APP_FILTER } from '@nestjs/core'
  23. import { AllExceptionsFilter } from './filters/all-exceptions-filter.filter'
  24. @Module({
  25. imports: [
  26. DevtoolsModule.register({
  27. http: process.env.NODE_ENV !== 'production',
  28. port: 8000
  29. }),
  30. ConfigModule.forRoot({
  31. isGlobal: true,
  32. validationSchema: Yup.object({
  33. TYPEORM_HOST: Yup.string().required(),
  34. TYPEORM_PORT: Yup.number().default(3306),
  35. TYPEORM_USERNAME: Yup.string().required(),
  36. TYPEORM_PASSWORD: Yup.string().required(),
  37. TYPEORM_DATABASE: Yup.string().required()
  38. })
  39. }),
  40. ThrottlerModule.forRootAsync({
  41. imports: [ConfigModule],
  42. inject: [ConfigService],
  43. useFactory: (config: ConfigService) => ({
  44. ttl: config.get<number>('THROTTLE_TTL'),
  45. limit: config.get<number>('THROTTLE_LIMIT')
  46. })
  47. }),
  48. TypeOrmModule.forRootAsync({
  49. imports: [ConfigModule],
  50. inject: [ConfigService],
  51. useFactory: (config: ConfigService) => ({
  52. type: 'mysql',
  53. host: config.get<string>('TYPEORM_HOST'),
  54. port: config.get<number>('TYPEORM_PORT'),
  55. username: config.get<string>('TYPEORM_USERNAME'),
  56. password: config.get<string>('TYPEORM_PASSWORD'),
  57. database: config.get<string>('TYPEORM_DATABASE'),
  58. synchronize: true,
  59. entities: [__dirname + '/**/*.entity.{ts,js}'],
  60. migrations: ['dist/migrations/**/*.js'],
  61. subscribers: ['dist/subscriber/**/*.js'],
  62. cli: {
  63. migrationsDir: config.get<string>('TYPEORM_MIGRATIONS_DIR'),
  64. subscribersDir: config.get<string>('TYPEORM_SUBSCRIBERS_DIR')
  65. }
  66. })
  67. }),
  68. AliyunModule,
  69. SmsModule,
  70. UsersModule,
  71. AuthModule,
  72. FileModule,
  73. ChatModule,
  74. MembershipModule,
  75. WeixinModule,
  76. NotifyModule,
  77. CommissionModule,
  78. UserBalanceModule,
  79. WithdrawModule,
  80. SysConfigModule
  81. ],
  82. controllers: [AppController],
  83. providers: [
  84. AppService,
  85. {
  86. provide: APP_FILTER,
  87. useClass: AllExceptionsFilter
  88. }
  89. ]
  90. })
  91. export class AppModule {}