app.module.ts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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 { ThrottlerModule } from '@nestjs/throttler'
  6. import * as Yup from 'yup'
  7. import { DevtoolsModule } from '@nestjs/devtools-integration'
  8. import { APP_FILTER } from '@nestjs/core'
  9. import { UsersModule } from './users/users.module'
  10. import { SmsModule } from './sms/sms.module'
  11. import { AuthModule } from './auth/auth.module'
  12. import { FileModule } from './file/file.module'
  13. import { ChatModule } from './chat/chat.module'
  14. import { MembershipModule } from './membership/membership.module'
  15. import { WeixinModule } from './weixin/weixin.module'
  16. import { NotifyModule } from './notify/notify.module'
  17. import { CommissionModule } from './commission/commission.module'
  18. import { UserBalanceModule } from './user-balance/user-balance.module'
  19. import { MaskModule } from './mask/mask.module'
  20. import { WithdrawModule } from './withdraw/withdraw.module'
  21. import { SysConfigModule } from './sys-config/sys-config.module'
  22. import { AllExceptionsFilter } from './filters/all-exceptions-filter.filter'
  23. import { ChatRoleModule } from './chat-role/chat-role.module'
  24. import { LabelModule } from './label/label.module'
  25. import { MomentsModule } from './moments/moments.module'
  26. import { CommentModule } from './comment/comment.module'
  27. import { LikesModule } from './likes/likes.module'
  28. import { ChatPdfModule } from './chat-pdf/chat-pdf.module';
  29. @Module({
  30. imports: [
  31. DevtoolsModule.register({
  32. http: process.env.NODE_ENV !== 'production',
  33. port: 8000
  34. }),
  35. ConfigModule.forRoot({
  36. isGlobal: true,
  37. validationSchema: Yup.object({
  38. TYPEORM_HOST: Yup.string().required(),
  39. TYPEORM_PORT: Yup.number().default(3306),
  40. TYPEORM_USERNAME: Yup.string().required(),
  41. TYPEORM_PASSWORD: Yup.string().required(),
  42. TYPEORM_DATABASE: Yup.string().required()
  43. })
  44. }),
  45. ThrottlerModule.forRootAsync({
  46. imports: [ConfigModule],
  47. inject: [ConfigService],
  48. useFactory: (config: ConfigService) => ({
  49. ttl: config.get<number>('THROTTLE_TTL'),
  50. limit: config.get<number>('THROTTLE_LIMIT')
  51. })
  52. }),
  53. TypeOrmModule.forRootAsync({
  54. imports: [ConfigModule],
  55. inject: [ConfigService],
  56. useFactory: (config: ConfigService) => ({
  57. type: 'mysql',
  58. host: config.get<string>('TYPEORM_HOST'),
  59. port: config.get<number>('TYPEORM_PORT'),
  60. username: config.get<string>('TYPEORM_USERNAME'),
  61. password: config.get<string>('TYPEORM_PASSWORD'),
  62. database: config.get<string>('TYPEORM_DATABASE'),
  63. synchronize: true,
  64. entities: [__dirname + '/**/*.entity.{ts,js}'],
  65. migrations: ['dist/migrations/**/*.js'],
  66. subscribers: ['dist/subscriber/**/*.js'],
  67. cli: {
  68. migrationsDir: config.get<string>('TYPEORM_MIGRATIONS_DIR'),
  69. subscribersDir: config.get<string>('TYPEORM_SUBSCRIBERS_DIR')
  70. }
  71. })
  72. }),
  73. TypeOrmModule.forRootAsync({
  74. imports: [ConfigModule],
  75. inject: [ConfigService],
  76. useFactory: (config: ConfigService) => ({
  77. name: 'db1',
  78. type: 'postgres',
  79. host: config.get<string>('PG_HOST'),
  80. port: config.get<number>('PG_PORT'),
  81. username: config.get<string>('PG_USERNAME'),
  82. password: config.get<string>('PG_PASSWORD'),
  83. database: config.get<string>('PG_DATABASE'),
  84. synchronize: true
  85. })
  86. }),
  87. AliyunModule,
  88. SmsModule,
  89. UsersModule,
  90. AuthModule,
  91. FileModule,
  92. ChatModule,
  93. MembershipModule,
  94. WeixinModule,
  95. NotifyModule,
  96. CommissionModule,
  97. UserBalanceModule,
  98. MaskModule,
  99. WithdrawModule,
  100. SysConfigModule,
  101. ChatRoleModule,
  102. LabelModule,
  103. MomentsModule,
  104. CommentModule,
  105. LikesModule
  106. ChatPdfModule
  107. ],
  108. controllers: [],
  109. providers: [
  110. {
  111. provide: APP_FILTER,
  112. useClass: AllExceptionsFilter
  113. }
  114. ]
  115. })
  116. export class AppModule {}