Feat: Implement S3 object deletion when deleting an asset record
This commit is contained in:
parent
6d694efeb0
commit
4da31c52c0
@ -1,6 +1,8 @@
|
|||||||
import prisma from '../utils/db';
|
import prisma from '../utils/db';
|
||||||
import crypto from 'crypto';
|
import crypto from 'crypto';
|
||||||
import { MailService } from './mail.service';
|
import { MailService } from './mail.service';
|
||||||
|
import { s3Client, BUCKET_NAME } from '../utils/s3';
|
||||||
|
import { DeleteObjectCommand } from '@aws-sdk/client-s3';
|
||||||
|
|
||||||
export class AssetService {
|
export class AssetService {
|
||||||
private mailService = new MailService();
|
private mailService = new MailService();
|
||||||
@ -377,6 +379,19 @@ export class AssetService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async deleteAsset(id: string) {
|
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 } });
|
return await prisma.asset.delete({ where: { id } });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user