import Subcategory from '../models/Subcategory.js'; // @desc Create a new subcategory with an image // @route POST /api/subcategories export const createSubcategory = async (req, res) => { try { const { name, parentCategory } = req.body; // Ensure an image was uploaded via Cloudinary/Multer if (!req.file) { return res.status(400).json({ success: false, message: 'Subcategory image is required' }); } const subcategory = new Subcategory({ name, parentCategory, image: req.file.path // Cloudinary secure URL }); const savedSubcategory = await subcategory.save(); res.status(201).json({ success: true, subcategory: savedSubcategory }); } catch (error) { res.status(500).json({ success: false, message: 'Server Error', error: error.message }); } }; // @desc Get all subcategories (Optionally filter by parentCategory) // @route GET /api/subcategories export const getSubcategories = async (req, res) => { try { const filter = req.query.parentCategory ? { parentCategory: req.query.parentCategory } : {}; const subcategories = await Subcategory.find(filter).sort({ createdAt: -1 }); res.status(200).json({ success: true, subcategories }); } catch (error) { res.status(500).json({ success: false, message: 'Server Error' }); } }; // @desc Update a subcategory // @route PUT /api/subcategories/:id export const updateSubcategory = async (req, res) => { try { const { name, parentCategory } = req.body; let updateData = { name, parentCategory }; // If the user uploaded a new image, update the URL if (req.file) { updateData.image = req.file.path; } const updatedSubcategory = await Subcategory.findByIdAndUpdate( req.params.id, updateData, { new: true, runValidators: true } ); if (!updatedSubcategory) { return res.status(404).json({ success: false, message: 'Subcategory not found' }); } res.status(200).json({ success: true, subcategory: updatedSubcategory, message: 'Updated successfully' }); } catch (error) { res.status(500).json({ success: false, message: 'Server Error updating subcategory' }); } }; // @desc Delete a subcategory // @route DELETE /api/subcategories/:id export const deleteSubcategory = async (req, res) => { try { const subcategory = await Subcategory.findByIdAndDelete(req.params.id); if (!subcategory) { return res.status(404).json({ success: false, message: 'Subcategory not found' }); } res.status(200).json({ success: true, message: 'Subcategory deleted successfully' }); } catch (error) { res.status(500).json({ success: false, message: 'Server Error deleting subcategory' }); } };