You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.1 KiB
JavaScript

import Category from "../models/categoryModel.js";
import asyncHandler from "../middleware/asyncHandler.js";
const createCategory = asyncHandler(async (req, res) => {
try {
const { name } = req.body;
if (!name) {
return res.json({ error: "Name is totally required" });
}
const existingCategory = await Category.findOne({ name });
if (existingCategory) {
return res.json({ error: "Already exists" });
}
const category = await new Category({ name }).save()
res.json(category)
} catch (error) {
console.log(error);
return res.status(400).json(error);
}
});
const updateCategory = asyncHandler(async (req, res) => {
try {
const { name } = req.body;
const { categoryId } = req.params;
const category = await Category.findOne({ _id: categoryId });
if (!category) {
return res.status(404).json({ error: "Category not found" });
}
category.name = name;
const updatedCategory = await category.save();
res.json(updatedCategory);
} catch (error) {
console.error(error);
res.status(500).json({ error: "Internal server error" });
}
})
const removeCategory = asyncHandler(async(req, res) => {
try{
const removed = await Category.findByIdAndDelete(req.params.categoryId)
res.json(removed)
} catch(error){
console.log(error)
res.status(500).json({error: "Internal server error"})
}
})
const listCategory = asyncHandler(async(req, res) => {
try{
const allCategory = await Category.find({})
res.json(allCategory)
} catch(error){
console.log(error)
res.status(400).json(error.message)
}
})
const readCategory = asyncHandler(async(req, res) => {
try{
const category = await Category.findOne({_id: req.params.id})
res.json(category)
}catch(error){
console.log(error)
return res.status(400).json(error.message)
}
})
export {
createCategory,
updateCategory,
removeCategory,
listCategory,
readCategory
};