import { Module, Provider } from '@nestjs/common'; import { HealthHttpController } from './interface/http-controllers/health.http.controller'; import { TerminusModule } from '@nestjs/terminus'; import { MESSAGE_BROKER_PUBLISHER, MESSAGE_PUBLISHER } from 'src/app.constants'; import { MessageBrokerPublisher } from '@mobicoop/message-broker-module'; import { MessagePublisher } from './infrastructure/message-publisher'; import { RepositoriesHealthIndicatorUseCase } from './core/aplication/usecases/repositories.health-indicator.usecase'; import { AdRepository } from '../ad/infrastructure/ad.repository'; import { AD_REPOSITORY } from './health.di-tokens'; import { HealthGrpcController } from './interface/grpc-controllers/health.grpc.controller'; import { AdModule } from '@modules/ad/ad.module'; const grpcControllers = [HealthGrpcController]; const httpControllers = [HealthHttpController]; const useCases: Provider[] = [RepositoriesHealthIndicatorUseCase]; const repositories: Provider[] = [ { provide: AD_REPOSITORY, useClass: AdRepository, }, ]; const messageBrokers: Provider[] = [ { provide: MESSAGE_BROKER_PUBLISHER, useClass: MessageBrokerPublisher, }, { provide: MESSAGE_PUBLISHER, useClass: MessagePublisher, }, ]; @Module({ imports: [TerminusModule, AdModule], controllers: [...grpcControllers, ...httpControllers], providers: [...useCases, ...repositories, ...messageBrokers], }) export class HealthModule {}