| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // apps/box-app-api/src/app.module.ts
- import { Module } from '@nestjs/common';
- import { ConfigModule, ConfigService } from '@nestjs/config';
- import { ScheduleModule } from '@nestjs/schedule';
- import { APP_INTERCEPTOR, APP_FILTER } from '@nestjs/core';
- import { ResponseInterceptor } from '@box/common/interceptors/response.interceptor';
- import { HttpExceptionFilter } from '@box/common/filters/http-exception.filter';
- import { RedisCacheModule } from './redis/redis-cache.module';
- import { HealthModule } from './health/health.module';
- import { PrismaMongoModule } from './prisma/prisma-mongo.module';
- import { VideoModule } from './feature/video/video.module';
- import { AdModule } from './feature/ads/ad.module';
- import { HomepageModule } from './feature/homepage/homepage.module';
- import { SysParamsModule } from './feature/sys-params/sys-params.module';
- import { ImageConfigModule } from './feature/media-config/image-config.module';
- import { RedisModule } from '@box/db/redis/redis.module';
- import { RabbitmqModule } from './rabbitmq/rabbitmq.module';
- import { AuthModule } from './feature/auth/auth.module';
- import { RecommendationModule } from './feature/recommendation/recommendation.module';
- import path from 'path';
- @Module({
- imports: [
- // Global config, reuse .env + .env.app.dev at repo root
- ConfigModule.forRoot({
- isGlobal: true,
- envFilePath: [path.resolve(process.cwd(), '.env')],
- expandVariables: true,
- }),
- // Global Schedule module for CRON jobs
- ScheduleModule.forRoot(),
- // Global Redis module for RedisService
- RedisModule.forRootAsync({
- imports: [ConfigModule],
- inject: [ConfigService],
- useFactory: (configService: ConfigService) => ({
- host: configService.get<string>('REDIS_HOST') ?? '127.0.0.1',
- port: configService.get<number>('REDIS_PORT') ?? 6379,
- password: configService.get<string>('REDIS_PASSWORD'),
- db: configService.get<number>('REDIS_DB') ?? 0,
- keyPrefix: configService.get<string>('REDIS_KEY_PREFIX'),
- }),
- }),
- // RabbitMQ publisher for user login events
- RabbitmqModule,
- // Global Redis cache
- RedisCacheModule,
- // Mongo Prisma client for box_app DB (stub, to wire real client later)
- PrismaMongoModule,
- // Simple health endpoint
- AuthModule,
- HealthModule,
- VideoModule,
- AdModule,
- // RecommendationModule,
- HomepageModule,
- SysParamsModule,
- ImageConfigModule,
- ],
- providers: [
- {
- provide: APP_INTERCEPTOR,
- useClass: ResponseInterceptor,
- },
- {
- provide: APP_FILTER,
- useClass: HttpExceptionFilter,
- },
- ],
- })
- export class AppModule {}
|