import { Module } from '@nestjs/common'; import { PrismaModule } from '../../common/prisma-adapter/prisma.module.js'; import { IssueModule } from '../issue/issue.module.js'; import { UserModule } from '../user/user.module.js'; import { ISSUE_HISTORY_REPOSITORY } from './domain/repositories/issue-history.repository.interface.js'; import { IssueHistoryPrismaRepository } from './infrastructure/persistence/prisma/repositories/issue-history.prisma-repository.js'; import { HistoryController } from './presentation/controllers/history.controller.js'; import { GetIssueHistoryUseCase } from './application/use-cases/get-issue-history/get-issue-history.use-case.js'; import { GetDailyIssueStatsUseCase } from './application/use-cases/get-daily-issue-stats/get-daily-issue-stats.use-case.js'; /** * Чтение истории изменений задач и статистика по ней. Пишет историю * issue-модуль (IssuePrismaRepository) — в одной транзакции с задачей; * этот модуль от issue зависит, issue о нём не знает. */ @Module({ imports: [PrismaModule, IssueModule, UserModule], controllers: [HistoryController], providers: [ GetIssueHistoryUseCase, GetDailyIssueStatsUseCase, { // Domain видит только интерфейс IIssueHistoryRepository, // конкретную реализацию (Prisma) подставляет DI-контейнер здесь provide: ISSUE_HISTORY_REPOSITORY, useClass: IssueHistoryPrismaRepository, }, ], }) export class HistoryModule {}