- IssueAttachment link table (issue <-> file) + migration - GET/POST /issues/:issueId/attachments, DELETE .../attachments/:fileId - Only own uploaded files can be attached; attach is idempotent - Registers issues as a file owner: attached files stay visible to issue participants and are not collected by GC - IssueDetail.attachments GraphQL field via @ResolveField, issue module untouched Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 lines
706 B
SQL
19 lines
706 B
SQL
-- CreateTable
|
|
CREATE TABLE "issue_attachment" (
|
|
"issueId" INTEGER NOT NULL,
|
|
"fileId" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "issue_attachment_pkey" PRIMARY KEY ("issueId","fileId")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "issue_attachment_fileId_idx" ON "issue_attachment"("fileId");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "issue_attachment" ADD CONSTRAINT "issue_attachment_issueId_fkey" FOREIGN KEY ("issueId") REFERENCES "issue"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "issue_attachment" ADD CONSTRAINT "issue_attachment_fileId_fkey" FOREIGN KEY ("fileId") REFERENCES "file"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|