import { Module } from '@nestjs/common'; import { PrismaService } from './persistence/prisma/prisma.service'; import { ReportDefinitionRepository } from './persistence/repositories/report-definition.repository.impl'; import { ReportSnapshotRepository } from './persistence/repositories/report-snapshot.repository.impl'; import { ReportFileRepository } from './persistence/repositories/report-file.repository.impl'; import { REPORT_DEFINITION_REPOSITORY, REPORT_SNAPSHOT_REPOSITORY, REPORT_FILE_REPOSITORY, } from '../domain/repositories'; import { LeaderboardServiceClient } from './external/leaderboard-service/leaderboard-service.client'; import { PlantingServiceClient } from './external/planting-service/planting-service.client'; import { ExportModule } from './export/export.module'; import { RedisModule } from './redis/redis.module'; @Module({ imports: [ExportModule, RedisModule], providers: [ PrismaService, { provide: REPORT_DEFINITION_REPOSITORY, useClass: ReportDefinitionRepository, }, { provide: REPORT_SNAPSHOT_REPOSITORY, useClass: ReportSnapshotRepository, }, { provide: REPORT_FILE_REPOSITORY, useClass: ReportFileRepository, }, LeaderboardServiceClient, PlantingServiceClient, ], exports: [ PrismaService, REPORT_DEFINITION_REPOSITORY, REPORT_SNAPSHOT_REPOSITORY, REPORT_FILE_REPOSITORY, LeaderboardServiceClient, PlantingServiceClient, ExportModule, RedisModule, ], }) export class InfrastructureModule {}