freshyo/apps/backend/src/lib/delete-image.ts
2026-03-29 12:12:51 +05:30

44 lines
1.4 KiB
TypeScript

import { deleteImageUtil, getOriginalUrlFromSignedUrl } from "@/src/lib/s3-client"
import { getS3Url } from "@/src/lib/env-exporter"
function extractS3Key(url: string): string | null {
try {
// Check if this is a signed URL first and get the original if it is
const originalUrl = getOriginalUrlFromSignedUrl(url) || url;
// Find the index of '.com/' in the URL
// const comIndex = originalUrl.indexOf(".com/");
const baseUrlIndex = originalUrl.indexOf(getS3Url());
// If '.com/' is found, return everything after it
if (baseUrlIndex !== -1) {
return originalUrl.substring(baseUrlIndex + getS3Url().length); // +5 to skip '.com/'
}
} catch (error) {
console.error("Error extracting key from URL:", error);
}
// Return null if the pattern isn't found or there was an error
return null;
}
export async function deleteS3Image(imageUrl: string) {
try {
// First check if this is a signed URL and get the original if it is
const originalUrl = getOriginalUrlFromSignedUrl(imageUrl) || imageUrl;
const key = extractS3Key(originalUrl || "");
if (!key) {
throw new Error("Invalid image URL format");
}
const deleteS3 = await deleteImageUtil({keys: [key] });
if (!deleteS3) {
throw new Error("Failed to delete image from S3");
}
} catch (error) {
console.error("Error deleting image from S3:", error);
}
}