northwind-rest-api
Version:
Local REST API Exposing 'Northwind Traders' Database.
128 lines (114 loc) • 4 kB
JavaScript
const locations = require("../helpers/locations");
const uuid = require("uuid").v4;
const fsPromises = require("fs/promises");
const fs = require("fs");
async function saveProductImage(image) {
if (!image) return null;
const extension = image.name.substring(image.name.lastIndexOf("."));
const fileName = uuid() + extension;
const absolutePath = locations.getProductImageFile(fileName);
await image.mv(absolutePath);
return fileName;
}
async function updateProductImage(currentFileName, newImage) {
if(!newImage) return currentFileName;
await deleteProductImage(currentFileName);
const newFileName = await saveProductImage(newImage);
return newFileName;
}
async function deleteProductImage(fileName) {
if (!fileName) return;
const absolutePath = locations.getProductImageFile(fileName);
if(!absolutePath) return;
if(!fs.existsSync(absolutePath)) return;
try {
await fsPromises.unlink(absolutePath);
}
catch (err) { }
}
async function saveEmployeeImage(image) {
if (!image) return null;
const extension = image.name.substring(image.name.lastIndexOf("."));
const fileName = uuid() + extension;
const absolutePath = locations.getEmployeeImageFile(fileName);
await image.mv(absolutePath);
return fileName;
}
async function updateEmployeeImage(currentFileName, newImage) {
if(!newImage) return currentFileName;
await deleteEmployeeImage(currentFileName);
const newFileName = await saveEmployeeImage(newImage);
return newFileName;
}
async function deleteEmployeeImage(fileName) {
if (!fileName) return;
const absolutePath = locations.getEmployeeImageFile(fileName);
if(!absolutePath) return;
if(!fs.existsSync(absolutePath)) return;
try {
await fsPromises.unlink(absolutePath);
}
catch (err) { }
}
async function saveSupplierImage(image) {
if (!image) return null;
const extension = image.name.substring(image.name.lastIndexOf("."));
const fileName = uuid() + extension;
const absolutePath = locations.getSupplierImageFile(fileName);
await image.mv(absolutePath);
return fileName;
}
async function updateSupplierImage(currentFileName, newImage) {
if(!newImage) return currentFileName;
await deleteSupplierImage(currentFileName);
const newFileName = await saveSupplierImage(newImage);
return newFileName;
}
async function deleteSupplierImage(fileName) {
if (!fileName) return;
const absolutePath = locations.getSupplierImageFile(fileName);
if(!absolutePath) return;
if(!fs.existsSync(absolutePath)) return;
try {
await fsPromises.unlink(absolutePath);
}
catch (err) { }
}
async function saveCategoryImage(image) {
if (!image) return null;
const extension = image.name.substring(image.name.lastIndexOf("."));
const fileName = uuid() + extension;
const absolutePath = locations.getCategoryImageFile(fileName);
await image.mv(absolutePath);
return fileName;
}
async function updateCategoryImage(currentFileName, newImage) {
if(!newImage) return currentFileName;
await deleteCategoryImage(currentFileName);
const newFileName = await saveCategoryImage(newImage);
return newFileName;
}
async function deleteCategoryImage(fileName) {
if (!fileName) return;
const absolutePath = locations.getCategoryImageFile(fileName);
if(!absolutePath) return;
if(!fs.existsSync(absolutePath)) return;
try {
await fsPromises.unlink(absolutePath);
}
catch (err) { }
}
module.exports = {
saveProductImage,
updateProductImage,
deleteProductImage,
saveEmployeeImage,
updateEmployeeImage,
deleteEmployeeImage,
saveSupplierImage,
updateSupplierImage,
deleteSupplierImage,
saveCategoryImage,
updateCategoryImage,
deleteCategoryImage
};