File tree Expand file tree Collapse file tree 2 files changed +24
-1
lines changed
Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -9,7 +9,7 @@ import { generateUID } from "@kan/shared/utils";
99
1010import { createTRPCRouter , protectedProcedure } from "../trpc" ;
1111import { assertUserInWorkspace } from "../utils/auth" ;
12- import { generateUploadUrl } from "../utils/s3" ;
12+ import { deleteObject , generateUploadUrl } from "../utils/s3" ;
1313
1414export const attachmentRouter = createTRPCRouter ( {
1515 generateUploadUrl : protectedProcedure
@@ -189,6 +189,18 @@ export const attachmentRouter = createTRPCRouter({
189189
190190 await assertUserInWorkspace ( ctx . db , userId , workspaceId ) ;
191191
192+ const bucket = process . env . NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAME ;
193+ if ( bucket ) {
194+ try {
195+ await deleteObject ( bucket , attachment . s3Key ) ;
196+ } catch ( error ) {
197+ console . error (
198+ `Failed to delete attachment from S3: ${ attachment . s3Key } ` ,
199+ error ,
200+ ) ;
201+ }
202+ }
203+
192204 await cardAttachmentRepo . softDelete ( ctx . db , {
193205 attachmentId : attachment . id ,
194206 deletedAt : new Date ( ) ,
Original file line number Diff line number Diff line change 11import {
2+ DeleteObjectCommand ,
23 GetObjectCommand ,
34 PutObjectCommand ,
45 S3Client ,
@@ -56,3 +57,13 @@ export async function generateDownloadUrl(
5657 { expiresIn } ,
5758 ) ;
5859}
60+
61+ export async function deleteObject ( bucket : string , key : string ) {
62+ const client = createS3Client ( ) ;
63+ await client . send (
64+ new DeleteObjectCommand ( {
65+ Bucket : bucket ,
66+ Key : key ,
67+ } ) ,
68+ ) ;
69+ }
You can’t perform that action at this time.
0 commit comments