Files
Lucky_Wheel/apps/api/src/app.module.ts
T

63 lines
2.1 KiB
TypeScript
Raw Normal View History

2026-09-10 01:58:29 +03:30
import { BullModule } from '@nestjs/bullmq';
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ScheduleModule } from '@nestjs/schedule';
import { ThrottlerModule } from '@nestjs/throttler';
import { validateEnv } from './config/env.validation';
import { AdminAuditModule } from './modules/admin-audit/admin-audit.module';
import { AdminAuthModule } from './modules/admin-auth/admin-auth.module';
import { AuthModule } from './modules/auth/auth.module';
import { CampaignModule } from './modules/campaign/campaign.module';
import { ChanceModule } from './modules/chance/chance.module';
import { PrizeModule } from './modules/prize/prize.module';
import { ReportModule } from './modules/report/report.module';
import { SmsModule } from './modules/sms/sms.module';
import { SpinEngineModule } from './modules/spin-engine/spin-engine.module';
import { StorageModule } from './modules/storage/storage.module';
import { UserModule } from './modules/user/user.module';
import { WinnerModule } from './modules/winner/winner.module';
import { PrismaModule } from './prisma/prisma.module';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
validate: validateEnv,
envFilePath: '.env',
}),
ScheduleModule.forRoot(),
ThrottlerModule.forRoot([
{
name: 'default',
ttl: 60000,
limit: 60,
},
]),
BullModule.forRootAsync({
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
connection: {
host: configService.get<string>('REDIS_HOST', 'localhost'),
port: configService.get<number>('REDIS_PORT', 6379),
password: configService.get<string>('REDIS_PASSWORD') || undefined,
},
}),
inject: [ConfigService],
}),
PrismaModule,
AuthModule,
AdminAuthModule,
StorageModule,
CampaignModule,
PrizeModule,
ChanceModule,
UserModule,
SmsModule,
SpinEngineModule,
WinnerModule,
ReportModule,
AdminAuditModule,
],
})
export class AppModule {}