UNPKG

northwind-rest-api

Version:

Local REST API Exposing 'Northwind Traders' Database.

61 lines (55 loc) 2.38 kB
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 };