Add attachments to comments
- CommentAttachment link table (comment <-> file) + migration - fileIds in create/update comment; update replaces the whole set, synced in one transaction with the comment - CommentDto.attachments; empty for deleted comments - Soft delete drops attachments so GC can collect the files - Max 10 files per comment, ordered by upload time (uuid v7) - Registers comments as a file owner - Rename CommentAuthorExpanderService -> CommentExpanderService (expands authors and files) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
423afa658d
commit
60fb39f98f
28 files changed
+522
-69
No files matched your search
@@ -2,6 +2,7 @@ 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 { FileModule } from '../file/file.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';
|
||||
@@ -11,11 +12,12 @@ import { UpdateCommentUseCase } from './application/use-cases/update-comment/upd
|
||||
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 { CommentExpanderService } from './application/services/comment-expander.service.js';
|
||||
import { CommentEventsService } from './application/services/comment-events.service.js';
|
||||
import { CommentAttachmentFileOwnerService } from './application/services/comment-attachment-file-owner.service.js';
|
||||
|
||||
@Module({
|
||||
imports: [PrismaModule, IssueModule, UserModule],
|
||||
imports: [PrismaModule, IssueModule, UserModule, FileModule],
|
||||
controllers: [CommentController],
|
||||
providers: [
|
||||
CreateCommentUseCase,
|
||||
@@ -24,8 +26,9 @@ import { CommentEventsService } from './application/services/comment-events.serv
|
||||
DeleteCommentUseCase,
|
||||
WatchIssueCommentsUseCase,
|
||||
CommentAccessService,
|
||||
CommentAuthorExpanderService,
|
||||
CommentExpanderService,
|
||||
CommentEventsService,
|
||||
CommentAttachmentFileOwnerService,
|
||||
{
|
||||
// Domain видит только интерфейс ICommentRepository,
|
||||
// конкретную реализацию (Prisma) подставляет DI-контейнер здесь
|
||||
|
||||
Reference in new issue
Block a user