app.module.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { Module, OnModuleInit } from '@nestjs/common';
  2. import { ConfigModule } from '@nestjs/config';
  3. import { DevtoolsModule } from '@nestjs/devtools-integration';
  4. import dayjs from 'dayjs';
  5. import timezone from 'dayjs/plugin/timezone.js';
  6. import utc from 'dayjs/plugin/utc.js';
  7. import { CommonModule } from '@box/common/common.module';
  8. import { SharedModule } from '@box/db/shared.module';
  9. import { appConfigFactory } from './app.config';
  10. import { validateEnvironment } from './config/env.validation';
  11. import { LoggerModule } from 'nestjs-pino';
  12. import { MgntBackendModule } from './mgnt-backend/mgnt-backend.module';
  13. import pinoConfig from '@box/common/config/pino.config'; // adjust if your export name differs
  14. @Module({
  15. imports: [
  16. // Global config, load from .env.mgnt.dev then .env with validation
  17. ConfigModule.forRoot({
  18. isGlobal: true,
  19. envFilePath: ['.env.mgnt.dev', '.env'],
  20. validate: validateEnvironment,
  21. }),
  22. ConfigModule.forFeature(appConfigFactory),
  23. CommonModule,
  24. // Shared utilities (includes PrismaModule, UtilsService)
  25. SharedModule,
  26. // Pino logger
  27. LoggerModule.forRoot(pinoConfig),
  28. // Your actual management backend
  29. MgntBackendModule,
  30. // 4) Devtools
  31. DevtoolsModule.register({
  32. http: process.env.NODE_ENV === 'development',
  33. }),
  34. ],
  35. })
  36. export class AppModule implements OnModuleInit {
  37. onModuleInit() {
  38. dayjs.extend(utc);
  39. dayjs.extend(timezone);
  40. }
  41. }