app.module.ts 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. @Module({
  22. imports: [
  23. DevtoolsModule.register({
  24. http: process.env.NODE_ENV !== 'production',
  25. port: 8000
  26. }),
  27. ConfigModule.forRoot({
  28. isGlobal: true,
  29. validationSchema: Yup.object({
  30. TYPEORM_HOST: Yup.string().required(),
  31. TYPEORM_PORT: Yup.number().default(3306),
  32. TYPEORM_USERNAME: Yup.string().required(),
  33. TYPEORM_PASSWORD: Yup.string().required(),
  34. TYPEORM_DATABASE: Yup.string().required()
  35. })
  36. }),
  37. ThrottlerModule.forRootAsync({
  38. imports: [ConfigModule],
  39. inject: [ConfigService],
  40. useFactory: (config: ConfigService) => ({
  41. ttl: config.get<number>('THROTTLE_TTL'),
  42. limit: config.get<number>('THROTTLE_LIMIT')
  43. })
  44. }),
  45. TypeOrmModule.forRootAsync({
  46. imports: [ConfigModule],
  47. inject: [ConfigService],
  48. useFactory: (config: ConfigService) => ({
  49. type: 'mysql',
  50. host: config.get<string>('TYPEORM_HOST'),
  51. port: config.get<number>('TYPEORM_PORT'),
  52. username: config.get<string>('TYPEORM_USERNAME'),
  53. password: config.get<string>('TYPEORM_PASSWORD'),
  54. database: config.get<string>('TYPEORM_DATABASE'),
  55. synchronize: true,
  56. entities: [__dirname + '/**/*.entity.{ts,js}'],
  57. migrations: ['dist/migrations/**/*.js'],
  58. subscribers: ['dist/subscriber/**/*.js'],
  59. cli: {
  60. migrationsDir: config.get<string>('TYPEORM_MIGRATIONS_DIR'),
  61. subscribersDir: config.get<string>('TYPEORM_SUBSCRIBERS_DIR')
  62. }
  63. })
  64. }),
  65. AliyunModule,
  66. SmsModule,
  67. UsersModule,
  68. AuthModule,
  69. FileModule,
  70. ChatModule,
  71. MembershipModule,
  72. WeixinModule,
  73. NotifyModule,
  74. CommissionModule,
  75. UserBalanceModule,
  76. WithdrawModule
  77. ],
  78. controllers: [AppController],
  79. providers: [AppService]
  80. })
  81. export class AppModule {}