import {Module} from '@nestjs/common'; import {TypeOrmModule, TypeOrmModuleAsyncOptions} from '@nestjs/typeorm'; import {DatabaseModule, RedisModule} from './database'; import {TypeOrmSQLConfigService} from './database'; import {LoggerModule} from './logger'; import {APP_FILTER, APP_INTERCEPTOR} from '@nestjs/core/constants'; import {MicroServiceExceptionFilter} from './exceptions'; import {CacheInterceptor, TimeoutInterceptor} from './interceptors'; import {AppError} from './exceptions/app-error'; import {TerminusModule, TerminusModuleAsyncOptions} from '@nestjs/terminus'; import {TerminusOptionsService} from './modules/app/services'; import {MigrationHealthIndicator, PostgresHealthIndicator} from './modules/app/health'; @Module({ imports: [ TerminusModule.forRootAsync({ imports: [AfconSharedCodeModule], useClass: TerminusOptionsService, } as TerminusModuleAsyncOptions), TypeOrmModule.forRootAsync({ imports: [DatabaseModule], useExisting: TypeOrmSQLConfigService, } as TypeOrmModuleAsyncOptions), LoggerModule, RedisModule, ], providers: [ { provide: APP_FILTER, useClass: MicroServiceExceptionFilter, }, { provide: APP_FILTER, useClass: AppError, }, { provide: APP_INTERCEPTOR, useClass: CacheInterceptor, }, { provide: APP_INTERCEPTOR, useClass: TimeoutInterceptor, }, PostgresHealthIndicator, MigrationHealthIndicator, ], exports: [PostgresHealthIndicator, MigrationHealthIndicator], }) export class AfconSharedCodeModule { }