rwadurian/backend/services/reporting-service/src/infrastructure/infrastructure.module.ts

88 lines
3.2 KiB
TypeScript

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 { DashboardStatsSnapshotRepository } from './persistence/repositories/dashboard-stats-snapshot.repository.impl';
import { DashboardTrendDataRepository } from './persistence/repositories/dashboard-trend-data.repository.impl';
import { SystemActivityRepository } from './persistence/repositories/system-activity.repository.impl';
import { RealtimeStatsRepository } from './persistence/repositories/realtime-stats.repository.impl';
import { GlobalStatsRepository } from './persistence/repositories/global-stats.repository.impl';
import {
REPORT_DEFINITION_REPOSITORY,
REPORT_SNAPSHOT_REPOSITORY,
REPORT_FILE_REPOSITORY,
DASHBOARD_STATS_SNAPSHOT_REPOSITORY,
DASHBOARD_TREND_DATA_REPOSITORY,
SYSTEM_ACTIVITY_REPOSITORY,
REALTIME_STATS_REPOSITORY,
GLOBAL_STATS_REPOSITORY,
} from '../domain/repositories';
import { LeaderboardServiceClient } from './external/leaderboard-service/leaderboard-service.client';
import { PlantingServiceClient } from './external/planting-service/planting-service.client';
import { AuthorizationServiceClient } from './external/authorization-service/authorization-service.client';
import { IdentityServiceClient } from './external/identity-service/identity-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,
},
{
provide: DASHBOARD_STATS_SNAPSHOT_REPOSITORY,
useClass: DashboardStatsSnapshotRepository,
},
{
provide: DASHBOARD_TREND_DATA_REPOSITORY,
useClass: DashboardTrendDataRepository,
},
{
provide: SYSTEM_ACTIVITY_REPOSITORY,
useClass: SystemActivityRepository,
},
{
provide: REALTIME_STATS_REPOSITORY,
useClass: RealtimeStatsRepository,
},
{
provide: GLOBAL_STATS_REPOSITORY,
useClass: GlobalStatsRepository,
},
LeaderboardServiceClient,
PlantingServiceClient,
AuthorizationServiceClient,
IdentityServiceClient,
],
exports: [
PrismaService,
REPORT_DEFINITION_REPOSITORY,
REPORT_SNAPSHOT_REPOSITORY,
REPORT_FILE_REPOSITORY,
DASHBOARD_STATS_SNAPSHOT_REPOSITORY,
DASHBOARD_TREND_DATA_REPOSITORY,
SYSTEM_ACTIVITY_REPOSITORY,
REALTIME_STATS_REPOSITORY,
GLOBAL_STATS_REPOSITORY,
LeaderboardServiceClient,
PlantingServiceClient,
AuthorizationServiceClient,
IdentityServiceClient,
ExportModule,
RedisModule,
],
})
export class InfrastructureModule {}