import { Module } from '@nestjs/common'; import { APP_FILTER, APP_INTERCEPTOR, APP_GUARD } from '@nestjs/core'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Connection } from 'typeorm'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { RolesGuard } from './shared/roles.guard'; import { LoggingInterceptor } from './shared/logging.interceptor'; import { StatesGuard } from './shared/states.guard'; import { HttpErrorFilter } from './shared/http-error.filter'; import { NotificationModule } from './notifications/notifications.module'; import { TaskModule } from './task/task.module'; import { TrackingModule } from './tracking/tracking.module'; import { UserModule } from './user/user.module'; import { DrawModule } from './draw/draw.module'; import { FactionModule } from './faction/faction.module'; import { GameModule } from './game/game.module'; import { ScoreModule } from './score/score.module'; import { ReplayModule } from './replay/replay.module'; /* Core of the server, Every module is being imported and combined here. TypeOrmModule checks ormconfig.json for database connection. Providers can be found from shared folder - HttpErrorFilter - LoggingInterceptor - RolesGuard Decorator - StatesGuard Decorator */ @Module({ imports: [ TypeOrmModule.forRoot(), UserModule, GameModule, NotificationModule, TaskModule, DrawModule, FactionModule, TrackingModule, ScoreModule, ReplayModule, ], controllers: [AppController], providers: [ AppService, { provide: APP_FILTER, useClass: HttpErrorFilter, }, { provide: APP_INTERCEPTOR, useClass: LoggingInterceptor, }, { provide: APP_GUARD, useClass: RolesGuard, }, { provide: APP_GUARD, useClass: StatesGuard, }, ], }) export class AppModule { constructor(private readonly connection: Connection) {} }