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 { COMMENT_REPOSITORY } from './domain/repositories/comment.repository.interface.js'; import { CommentPrismaRepository } from './infrastructure/persistence/prisma/repositories/comment.prisma-repository.js'; import { CommentController } from './presentation/controllers/comment.controller.js'; import { CreateCommentUseCase } from './application/use-cases/create-comment/create-comment.use-case.js'; import { ListCommentsUseCase } from './application/use-cases/list-comments/list-comments.use-case.js'; import { UpdateCommentUseCase } from './application/use-cases/update-comment/update-comment.use-case.js'; import { DeleteCommentUseCase } from './application/use-cases/delete-comment/delete-comment.use-case.js'; import { WatchIssueCommentsUseCase } from './application/use-cases/watch-issue-comments/watch-issue-comments.use-case.js'; import { CommentAccessService } from './application/services/comment-access.service.js'; import { CommentAuthorExpanderService } from './application/services/comment-author-expander.service.js'; import { CommentEventsService } from './application/services/comment-events.service.js'; @Module({ imports: [PrismaModule, IssueModule, UserModule], controllers: [CommentController], providers: [ CreateCommentUseCase, ListCommentsUseCase, UpdateCommentUseCase, DeleteCommentUseCase, WatchIssueCommentsUseCase, CommentAccessService, CommentAuthorExpanderService, CommentEventsService, { // Domain видит только интерфейс ICommentRepository, // конкретную реализацию (Prisma) подставляет DI-контейнер здесь provide: COMMENT_REPOSITORY, useClass: CommentPrismaRepository, }, ], }) export class CommentModule {}