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

47 lines
1.6 KiB
TypeScript

import { Module } from '@nestjs/common';
import { PrismaService } from './persistence/prisma/prisma.service';
import { EventLogMapper } from './persistence/mappers/event-log.mapper';
import { DailyActiveStatsMapper } from './persistence/mappers/daily-active-stats.mapper';
import { OnlineSnapshotMapper } from './persistence/mappers/online-snapshot.mapper';
import { EventLogRepositoryImpl } from './persistence/repositories/event-log.repository.impl';
import { DailyActiveStatsRepositoryImpl } from './persistence/repositories/daily-active-stats.repository.impl';
import { OnlineSnapshotRepositoryImpl } from './persistence/repositories/online-snapshot.repository.impl';
import { RedisModule } from './redis/redis.module';
import { KafkaModule } from './kafka/kafka.module';
import {
EVENT_LOG_REPOSITORY,
DAILY_ACTIVE_STATS_REPOSITORY,
ONLINE_SNAPSHOT_REPOSITORY,
} from '../domain/repositories/event-log.repository.interface';
@Module({
imports: [RedisModule, KafkaModule],
providers: [
PrismaService,
EventLogMapper,
DailyActiveStatsMapper,
OnlineSnapshotMapper,
{
provide: EVENT_LOG_REPOSITORY,
useClass: EventLogRepositoryImpl,
},
{
provide: DAILY_ACTIVE_STATS_REPOSITORY,
useClass: DailyActiveStatsRepositoryImpl,
},
{
provide: ONLINE_SNAPSHOT_REPOSITORY,
useClass: OnlineSnapshotRepositoryImpl,
},
],
exports: [
PrismaService,
EVENT_LOG_REPOSITORY,
DAILY_ACTIVE_STATS_REPOSITORY,
ONLINE_SNAPSHOT_REPOSITORY,
RedisModule,
KafkaModule,
],
})
export class InfrastructureModule {}