const sharp = require("sharp"); const s3Storage = require("./s3Storage"); const USER_IMAGE_PREFIX = "uploads/images/users"; const getStoredImageName = (doc, field) => doc.get(field, null, { getters: false }); const deleteUserImage = async (doc, field) => { const fileName = getStoredImageName(doc, field); if (!fileName) return; try { await s3Storage.deleteObject(`${USER_IMAGE_PREFIX}/${fileName}`); } catch (error) { console.log(`Failed to delete ${field} from S3:`, error?.message); } }; const uploadProcessedImage = async ( imageData, imageName, width, height, quality ) => { const buffer = await sharp(imageData) .resize(width, height, { fit: "cover" }) .jpeg({ quality }) .toBuffer(); await s3Storage.uploadBuffer( `${USER_IMAGE_PREFIX}/${imageName}`, buffer, "image/jpeg" ); return imageName; }; module.exports = { USER_IMAGE_PREFIX, getStoredImageName, deleteUserImage, uploadProcessedImage, };