From 4da31c52c09ce78860c23b26a108473d3993f12b Mon Sep 17 00:00:00 2001 From: kenilkb Date: Thu, 16 Jul 2026 10:00:34 +0530 Subject: [PATCH] Feat: Implement S3 object deletion when deleting an asset record --- Channel-Backend/src/services/asset.service.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Channel-Backend/src/services/asset.service.ts b/Channel-Backend/src/services/asset.service.ts index 554aea0..3d7649a 100644 --- a/Channel-Backend/src/services/asset.service.ts +++ b/Channel-Backend/src/services/asset.service.ts @@ -1,6 +1,8 @@ import prisma from '../utils/db'; import crypto from 'crypto'; import { MailService } from './mail.service'; +import { s3Client, BUCKET_NAME } from '../utils/s3'; +import { DeleteObjectCommand } from '@aws-sdk/client-s3'; export class AssetService { private mailService = new MailService(); @@ -377,6 +379,19 @@ export class AssetService { } public async deleteAsset(id: string) { + const asset = await prisma.asset.findUnique({ where: { id } }); + if (asset && asset.url.startsWith('/uploads/')) { + const filename = asset.url.replace('/uploads/', ''); + try { + await s3Client.send(new DeleteObjectCommand({ + Bucket: BUCKET_NAME, + Key: filename, + })); + console.log(`[S3] Deleted file: ${filename}`); + } catch (err) { + console.error(`[S3] Failed to delete file ${filename}:`, err); + } + } return await prisma.asset.delete({ where: { id } }); }