northwind-rest-api
Version:
Local REST API Exposing 'Northwind Traders' Database.
61 lines (55 loc) • 2.38 kB
JavaScript
const dal = require("../data-access-layer/dal");
const imageHelper = require("../helpers/image-helper");
async function getAllCategories() {
const categories = await dal.getAllCategories();
return categories;
};
async function getOneCategory(id) {
const categories = await dal.getAllCategories();
const category = categories.find(c => c.id === id);
return category;
};
async function addCategory(category, image) {
const categories = await dal.getAllCategories();
const maxId = categories.reduce((maxId, c) => c.id > maxId ? c.id : maxId, 0);
category.id = maxId + 1;
const fileName = await imageHelper.saveCategoryImage(image);
category.imageUrl = fileName ? "http://localhost:3030/api/categories/images/" + fileName : null;
categories.push(category);
await dal.saveAllCategories(categories);
return category;
};
async function updateCategory(newCategory, image) {
const categories = await dal.getAllCategories();
const existingCategory = categories.find(c => c.id === newCategory.id);
if (!existingCategory) return null;
for (const prop in newCategory) {
if (newCategory[prop] !== undefined) {
existingCategory[prop] = newCategory[prop];
}
}
const currentFileName = existingCategory.imageUrl ? existingCategory.imageUrl.substring(existingCategory.imageUrl.lastIndexOf("/") + 1) : null;
const newFileName = await imageHelper.updateCategoryImage(currentFileName, image);
if(newFileName) {
existingCategory.imageUrl = "http://localhost:3030/api/categories/images/" + newFileName;
}
await dal.saveAllCategories(categories);
return existingCategory;
};
async function deleteCategory(id) {
const categories = await dal.getAllCategories();
const index = categories.findIndex(c => c.id === id);
if (index === -1) return;
const existingCategory = categories[index];
const currentFileName = existingCategory.imageUrl ? existingCategory.imageUrl.substring(existingCategory.imageUrl.lastIndexOf("/") + 1) : null;
await imageHelper.deleteCategoryImage(currentFileName)
categories.splice(index, 1);
await dal.saveAllCategories(categories);
};
module.exports = {
getAllCategories,
getOneCategory,
addCategory,
updateCategory,
deleteCategory
};