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
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
|
|
};
|