64 lines
2.5 KiB
TypeScript
64 lines
2.5 KiB
TypeScript
import { Module, Global } from '@nestjs/common';
|
|
import { HttpModule } from '@nestjs/axios';
|
|
import { ConfigModule } from '@nestjs/config';
|
|
import { PrismaService } from '../infrastructure/database/prisma.service';
|
|
import { RedisService } from '../infrastructure/cache/redis.service';
|
|
import { LeaderboardCacheService } from '../infrastructure/cache/leaderboard-cache.service';
|
|
import { KafkaService } from '../infrastructure/messaging/kafka.service';
|
|
import { EventPublisherService } from '../infrastructure/messaging/event-publisher.service';
|
|
import { EventConsumerService } from '../infrastructure/messaging/event-consumer.service';
|
|
import { ReferralServiceClient } from '../infrastructure/external/referral-service.client';
|
|
import { IdentityServiceClient } from '../infrastructure/external/identity-service.client';
|
|
import { LeaderboardRankingRepositoryImpl } from '../infrastructure/repositories/leaderboard-ranking.repository.impl';
|
|
import { LeaderboardConfigRepositoryImpl } from '../infrastructure/repositories/leaderboard-config.repository.impl';
|
|
import { VirtualAccountRepositoryImpl } from '../infrastructure/repositories/virtual-account.repository.impl';
|
|
import { LEADERBOARD_RANKING_REPOSITORY } from '../domain/repositories/leaderboard-ranking.repository.interface';
|
|
import { LEADERBOARD_CONFIG_REPOSITORY } from '../domain/repositories/leaderboard-config.repository.interface';
|
|
import { VIRTUAL_ACCOUNT_REPOSITORY } from '../domain/repositories/virtual-account.repository.interface';
|
|
|
|
@Global()
|
|
@Module({
|
|
imports: [
|
|
ConfigModule,
|
|
HttpModule.register({
|
|
timeout: 5000,
|
|
maxRedirects: 5,
|
|
}),
|
|
],
|
|
providers: [
|
|
PrismaService,
|
|
RedisService,
|
|
LeaderboardCacheService,
|
|
KafkaService,
|
|
EventPublisherService,
|
|
EventConsumerService,
|
|
ReferralServiceClient,
|
|
IdentityServiceClient,
|
|
{
|
|
provide: LEADERBOARD_RANKING_REPOSITORY,
|
|
useClass: LeaderboardRankingRepositoryImpl,
|
|
},
|
|
{
|
|
provide: LEADERBOARD_CONFIG_REPOSITORY,
|
|
useClass: LeaderboardConfigRepositoryImpl,
|
|
},
|
|
{
|
|
provide: VIRTUAL_ACCOUNT_REPOSITORY,
|
|
useClass: VirtualAccountRepositoryImpl,
|
|
},
|
|
],
|
|
exports: [
|
|
PrismaService,
|
|
RedisService,
|
|
LeaderboardCacheService,
|
|
KafkaService,
|
|
EventPublisherService,
|
|
ReferralServiceClient,
|
|
IdentityServiceClient,
|
|
LEADERBOARD_RANKING_REPOSITORY,
|
|
LEADERBOARD_CONFIG_REPOSITORY,
|
|
VIRTUAL_ACCOUNT_REPOSITORY,
|
|
],
|
|
})
|
|
export class InfrastructureModule {}
|