import { Module } from '@nestjs/common'; import { PrismaModule } from '../../common/prisma-adapter/prisma.module.js'; import { ProjectModule } from '../project/project.module.js'; import { UserModule } from '../user/user.module.js'; import { IssuePrismaRepository } from './infrastructure/persistence/prisma/repositories/issue.prisma-repository.js'; import { ISSUE_REPOSITORY } from './domain/repositories/issue.repository.interface.js'; import { IssueController } from './presentation/controllers/issue.controller.js'; import { CreateIssueUseCase } from './application/use-cases/create-issue/create-issue.use-case.js'; import { GetIssueUseCase } from './application/use-cases/get-issue/get-issue.use-case.js'; import { ListIssuesUseCase } from './application/use-cases/list-issues/list-issues.use-case.js'; import { UpdateIssueUseCase } from './application/use-cases/update-issue/update-issue.use-case.js'; import { DeleteIssueUseCase } from './application/use-cases/delete-issue/delete-issue.use-case.js'; import { IssueResolver } from './presentation/resolvers/issue.resolver.js'; import { GetIssueByCkeyUseCase } from './application/use-cases/get-issue-by-ckey/get-issue-by-ckey.use-case.js'; import { IssueEventsService } from './application/services/issue-events.service.js'; import { IssueUserExpanderService } from './application/services/issue-user-expander.service.js'; import { GetIssueStatsUseCase } from './application/use-cases/get-issue-stats/get-issue-stats.use-case.js'; @Module({ imports: [PrismaModule, ProjectModule, UserModule], controllers: [IssueController], providers: [ CreateIssueUseCase, GetIssueUseCase, GetIssueByCkeyUseCase, ListIssuesUseCase, UpdateIssueUseCase, DeleteIssueUseCase, GetIssueStatsUseCase, IssueResolver, IssueEventsService, IssueUserExpanderService, { // Domain видит только интерфейс IIssueRepository, // конкретную реализацию (Prisma) подставляет DI-контейнер здесь provide: ISSUE_REPOSITORY, useClass: IssuePrismaRepository, }, ], exports: [ISSUE_REPOSITORY], }) export class IssueModule {}