47 lines
1.0 KiB
JavaScript
47 lines
1.0 KiB
JavaScript
const sharp = require("sharp");
|
|
const s3Storage = require("./s3Storage");
|
|
|
|
const YEAR_BANNER_IMAGE_PREFIX = "uploads/images/mainCover";
|
|
|
|
const getStoredImageName = (doc, field) =>
|
|
doc.get(field, null, { getters: false });
|
|
|
|
const deleteYearBannerImage = async (doc, field) => {
|
|
const fileName = getStoredImageName(doc, field);
|
|
if (!fileName) return;
|
|
|
|
try {
|
|
await s3Storage.deleteObject(`${YEAR_BANNER_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(
|
|
`${YEAR_BANNER_IMAGE_PREFIX}/${imageName}`,
|
|
buffer,
|
|
"image/jpeg"
|
|
);
|
|
|
|
return imageName;
|
|
};
|
|
|
|
module.exports = {
|
|
YEAR_BANNER_IMAGE_PREFIX,
|
|
getStoredImageName,
|
|
deleteYearBannerImage,
|
|
uploadProcessedImage,
|
|
};
|