66 lines
3.3 KiB
TypeScript
66 lines
3.3 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { PassportModule } from '@nestjs/passport';
|
|
import { JwtModule } from '@nestjs/jwt';
|
|
import { JwtStrategy } from './infrastructure/strategies/jwt.strategy';
|
|
|
|
// Domain entities
|
|
import { Settlement } from './domain/entities/settlement.entity';
|
|
import { Refund } from './domain/entities/refund.entity';
|
|
import { BreakageRecord } from './domain/entities/breakage-record.entity';
|
|
import { JournalEntry } from './domain/entities/journal-entry.entity';
|
|
import { Report } from './domain/entities/report.entity';
|
|
|
|
// Domain repository interfaces (symbols)
|
|
import { SETTLEMENT_REPOSITORY } from './domain/repositories/settlement.repository.interface';
|
|
import { REFUND_REPOSITORY } from './domain/repositories/refund.repository.interface';
|
|
import { BREAKAGE_REPOSITORY } from './domain/repositories/breakage.repository.interface';
|
|
import { JOURNAL_ENTRY_REPOSITORY } from './domain/repositories/journal-entry.repository.interface';
|
|
import { REPORT_REPOSITORY } from './domain/repositories/report.repository.interface';
|
|
|
|
// Infrastructure persistence implementations
|
|
import { SettlementRepository } from './infrastructure/persistence/settlement.repository';
|
|
import { RefundRepository } from './infrastructure/persistence/refund.repository';
|
|
import { BreakageRepository } from './infrastructure/persistence/breakage.repository';
|
|
import { JournalEntryRepository } from './infrastructure/persistence/journal-entry.repository';
|
|
import { ReportRepository } from './infrastructure/persistence/report.repository';
|
|
|
|
// Application services
|
|
import { SettlementService } from './application/services/settlement.service';
|
|
import { RefundService } from './application/services/refund.service';
|
|
import { BreakageService } from './application/services/breakage.service';
|
|
import { AdminFinanceService } from './application/services/admin-finance.service';
|
|
import { AdminReportsService } from './application/services/admin-reports.service';
|
|
|
|
// Interface controllers
|
|
import { ClearingController } from './interface/http/controllers/clearing.controller';
|
|
import { AdminFinanceController } from './interface/http/controllers/admin-finance.controller';
|
|
import { AdminReportsController } from './interface/http/controllers/admin-reports.controller';
|
|
|
|
@Module({
|
|
imports: [
|
|
TypeOrmModule.forFeature([Settlement, Refund, BreakageRecord, JournalEntry, Report]),
|
|
PassportModule.register({ defaultStrategy: 'jwt' }),
|
|
JwtModule.register({ secret: process.env.JWT_ACCESS_SECRET || 'dev-access-secret' }),
|
|
],
|
|
controllers: [ClearingController, AdminFinanceController, AdminReportsController],
|
|
providers: [
|
|
JwtStrategy,
|
|
// Repository DI bindings (interface -> implementation)
|
|
{ provide: SETTLEMENT_REPOSITORY, useClass: SettlementRepository },
|
|
{ provide: REFUND_REPOSITORY, useClass: RefundRepository },
|
|
{ provide: BREAKAGE_REPOSITORY, useClass: BreakageRepository },
|
|
{ provide: JOURNAL_ENTRY_REPOSITORY, useClass: JournalEntryRepository },
|
|
{ provide: REPORT_REPOSITORY, useClass: ReportRepository },
|
|
|
|
// Application services
|
|
SettlementService,
|
|
RefundService,
|
|
BreakageService,
|
|
AdminFinanceService,
|
|
AdminReportsService,
|
|
],
|
|
exports: [SettlementService, RefundService, BreakageService],
|
|
})
|
|
export class ClearingModule {}
|