43 lines
2.1 KiB
TypeScript
43 lines
2.1 KiB
TypeScript
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 {}
|