47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
import Category from '../models/category.model.js';
|
|
import slugify from "slugify";
|
|
|
|
// Create a new category (Admin only)
|
|
export const createCategory = async (req, res) => {
|
|
try {
|
|
const { name, projectId } = req.body;
|
|
if (!projectId) return res.status(400).json({ message: "projectId is required" });
|
|
|
|
const slug = slugify(name, { lower: true, strict: true });
|
|
|
|
const category = await Category.create({
|
|
name,
|
|
slug,
|
|
projectId
|
|
});
|
|
|
|
res.status(201).json(category);
|
|
} catch (err) {
|
|
res.status(500).json({ message: err.message });
|
|
}
|
|
};
|
|
|
|
// Get all categories for a project
|
|
export const getCategories = async (req, res) => {
|
|
try {
|
|
const { projectId } = req.query;
|
|
if (!projectId) return res.status(400).json({ message: "projectId is required" });
|
|
|
|
const categories = await Category.find({ projectId }).sort({ name: 1 });
|
|
res.json(categories);
|
|
} catch (err) {
|
|
res.status(500).json({ message: err.message });
|
|
}
|
|
};
|
|
|
|
// Delete a category (Admin only)
|
|
export const deleteCategory = async (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
await Category.findByIdAndDelete(id);
|
|
res.json({ message: "Category deleted" });
|
|
} catch (err) {
|
|
res.status(500).json({ message: err.message });
|
|
}
|
|
};
|