Spaces:
Sleeping
Sleeping
| 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' }); | |
| } | |
| }; |