| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // apps/box-mgnt-api/src/app.module.ts
- import { Module, OnModuleInit } from '@nestjs/common';
- import { ConfigModule, ConfigService } from '@nestjs/config';
- import { DevtoolsModule } from '@nestjs/devtools-integration';
- import { ScheduleModule } from '@nestjs/schedule';
- import dayjs from 'dayjs';
- import timezone from 'dayjs/plugin/timezone.js';
- import utc from 'dayjs/plugin/utc.js';
- import { CommonModule } from '@box/common/common.module';
- import { SharedModule } from '@box/db/shared.module';
- import { appConfigFactory } from './app.config';
- import { validateEnvironment } from './config/env.validation';
- import { LoggerModule } from 'nestjs-pino';
- import { MgntBackendModule } from './mgnt-backend/mgnt-backend.module';
- import pinoConfig from '@box/common/config/pino.config';
- import { CacheSyncModule } from './cache-sync/cache-sync.module';
- import { DevVideoCacheModule } from './dev/dev-video-cache.module';
- import { RedisModule } from '@box/db/redis/redis.module';
- import { CoreModule } from '@box/core/core.module';
- /**
- * Check if running in production
- */
- const isProd = process.env.NODE_ENV === 'production';
- @Module({
- imports: [
- // Global config, load from .env.mgnt then .env with validation
- ConfigModule.forRoot({
- isGlobal: true,
- envFilePath: ['.env'],
- validate: validateEnvironment,
- }),
- ConfigModule.forFeature(appConfigFactory),
- ScheduleModule.forRoot(),
- RedisModule.forRootAsync({
- imports: [ConfigModule],
- inject: [ConfigService],
- useFactory: (config: ConfigService) => ({
- host: config.get<string>('REDIS_HOST')!,
- port: config.get<number>('REDIS_PORT')!,
- password: config.get<string>('REDIS_PASSWORD') || undefined,
- db: config.get<number>('REDIS_DB') ?? 0,
- keyPrefix: config.get<string>('REDIS_KEY_PREFIX') ?? 'box:',
- tls: config.get<boolean>('REDIS_TLS') ?? false,
- }),
- }),
- CacheSyncModule,
- CoreModule,
- CommonModule,
- SharedModule,
- LoggerModule.forRoot(pinoConfig),
- MgntBackendModule,
- ...(isProd ? [] : [DevVideoCacheModule]),
- DevtoolsModule.register({
- http: process.env.NODE_ENV === 'development',
- }),
- ],
- providers: [],
- })
- export class AppModule implements OnModuleInit {
- onModuleInit() {
- dayjs.extend(utc);
- dayjs.extend(timezone);
- }
- }
|