67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { PrismaModule } from './persistence/prisma/prisma.module';
|
|
import { UnitOfWork } from './persistence/unit-of-work/unit-of-work';
|
|
import {
|
|
ContributionAccountRepository,
|
|
ContributionRecordRepository,
|
|
SyncedDataRepository,
|
|
UnallocatedContributionRepository,
|
|
SystemAccountRepository,
|
|
OutboxRepository,
|
|
} from './persistence/repositories';
|
|
import { KafkaModule } from './kafka/kafka.module';
|
|
import { KafkaProducerService } from './kafka/kafka-producer.service';
|
|
import { CDCConsumerService } from './kafka/cdc-consumer.service';
|
|
import { RedisModule } from './redis/redis.module';
|
|
import { SYNCED_DATA_REPOSITORY } from '../domain/repositories/synced-data.repository.interface';
|
|
|
|
// Repository injection tokens
|
|
export const CONTRIBUTION_ACCOUNT_REPOSITORY = 'CONTRIBUTION_ACCOUNT_REPOSITORY';
|
|
export const CONTRIBUTION_RECORD_REPOSITORY = 'CONTRIBUTION_RECORD_REPOSITORY';
|
|
|
|
@Module({
|
|
imports: [PrismaModule, KafkaModule, RedisModule],
|
|
providers: [
|
|
UnitOfWork,
|
|
// Repositories
|
|
ContributionAccountRepository,
|
|
ContributionRecordRepository,
|
|
SyncedDataRepository,
|
|
UnallocatedContributionRepository,
|
|
SystemAccountRepository,
|
|
OutboxRepository,
|
|
// Repository interface bindings
|
|
{
|
|
provide: CONTRIBUTION_ACCOUNT_REPOSITORY,
|
|
useClass: ContributionAccountRepository,
|
|
},
|
|
{
|
|
provide: CONTRIBUTION_RECORD_REPOSITORY,
|
|
useClass: ContributionRecordRepository,
|
|
},
|
|
{
|
|
provide: SYNCED_DATA_REPOSITORY,
|
|
useClass: SyncedDataRepository,
|
|
},
|
|
// Kafka
|
|
KafkaProducerService,
|
|
CDCConsumerService,
|
|
],
|
|
exports: [
|
|
UnitOfWork,
|
|
ContributionAccountRepository,
|
|
ContributionRecordRepository,
|
|
SyncedDataRepository,
|
|
UnallocatedContributionRepository,
|
|
SystemAccountRepository,
|
|
OutboxRepository,
|
|
CONTRIBUTION_ACCOUNT_REPOSITORY,
|
|
CONTRIBUTION_RECORD_REPOSITORY,
|
|
SYNCED_DATA_REPOSITORY,
|
|
KafkaProducerService,
|
|
CDCConsumerService,
|
|
RedisModule,
|
|
],
|
|
})
|
|
export class InfrastructureModule {}
|