app.module.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 { UserBalanceModule } from './user-balance/user-balance.module'
  14. import { SysConfigModule } from './sys-config/sys-config.module'
  15. import { AllExceptionsFilter } from './filters/all-exceptions-filter.filter'
  16. import { DownloadModule } from './download/download.module';
  17. @Module({
  18. imports: [
  19. DevtoolsModule.register({
  20. http: process.env.NODE_ENV !== 'production',
  21. port: 8000
  22. }),
  23. ConfigModule.forRoot({
  24. isGlobal: true,
  25. validationSchema: Yup.object({
  26. TYPEORM_HOST: Yup.string().required(),
  27. TYPEORM_PORT: Yup.number().default(3306),
  28. TYPEORM_USERNAME: Yup.string().required(),
  29. TYPEORM_PASSWORD: Yup.string().required(),
  30. TYPEORM_DATABASE: Yup.string().required()
  31. })
  32. }),
  33. ThrottlerModule.forRootAsync({
  34. imports: [ConfigModule],
  35. inject: [ConfigService],
  36. useFactory: (config: ConfigService) => ({
  37. ttl: config.get<number>('THROTTLE_TTL'),
  38. limit: config.get<number>('THROTTLE_LIMIT')
  39. })
  40. }),
  41. TypeOrmModule.forRootAsync({
  42. imports: [ConfigModule],
  43. inject: [ConfigService],
  44. useFactory: (config: ConfigService) => ({
  45. type: 'mysql',
  46. host: config.get<string>('TYPEORM_HOST'),
  47. port: config.get<number>('TYPEORM_PORT'),
  48. username: config.get<string>('TYPEORM_USERNAME'),
  49. password: config.get<string>('TYPEORM_PASSWORD'),
  50. database: config.get<string>('TYPEORM_DATABASE'),
  51. synchronize: true,
  52. entities: [__dirname + '/**/*.entity.{ts,js}'],
  53. migrations: ['dist/migrations/**/*.js'],
  54. subscribers: ['dist/subscriber/**/*.js'],
  55. cli: {
  56. migrationsDir: config.get<string>('TYPEORM_MIGRATIONS_DIR'),
  57. subscribersDir: config.get<string>('TYPEORM_SUBSCRIBERS_DIR')
  58. }
  59. })
  60. }),
  61. AliyunModule,
  62. SmsModule,
  63. UsersModule,
  64. AuthModule,
  65. FileModule,
  66. UserBalanceModule,
  67. SysConfigModule,
  68. DownloadModule
  69. ],
  70. controllers: [],
  71. providers: [
  72. {
  73. provide: APP_FILTER,
  74. useClass: AllExceptionsFilter
  75. }
  76. ]
  77. })
  78. export class AppModule {}