Spaces:
Runtime error
Runtime error
Download controllers/categoryController.js from samlax12/promptbackend: direct link, hf CLI and curl.
- Browser
- Download file 3.01 kB
-
https://huggingface.co/spaces/samlax12/promptbackend/resolve/main/controllers/categoryController.js
- Command line
-
hf download hf://spaces/samlax12/promptbackend/controllers/categoryController.js
-
curl -L -o categoryController.js https://huggingface.co/spaces/samlax12/promptbackend/resolve/main/controllers/categoryController.js
3.01 kB
| const asyncHandler = require('express-async-handler'); | |
| const Category = require('../models/Category'); | |
| const PromptGroup = require('../models/PromptGroup'); | |
| // @desc 获取所有分类 | |
| // @route GET /api/categories | |
| // @access Private | |
| const getCategories = asyncHandler(async (req, res) => { | |
| const categories = await Category.find({}).sort({ name: 1 }); | |
| res.json(categories); | |
| }); | |
| // @desc 通过ID获取分类 | |
| // @route GET /api/categories/:id | |
| // @access Private | |
| const getCategoryById = asyncHandler(async (req, res) => { | |
| const category = await Category.findById(req.params.id); | |
| if (category) { | |
| res.json(category); | |
| } else { | |
| res.status(404); | |
| throw new Error('分类未找到'); | |
| } | |
| }); | |
| // @desc 创建分类 | |
| // @route POST /api/categories | |
| // @access Private | |
| const createCategory = asyncHandler(async (req, res) => { | |
| const { name, color } = req.body; | |
| // 检查是否分类名称已存在 | |
| const categoryExists = await Category.findOne({ name }); | |
| if (categoryExists) { | |
| res.status(400); | |
| throw new Error('分类名称已存在'); | |
| } | |
| const category = await Category.create({ | |
| name, | |
| color: color || '#007AFF', | |
| }); | |
| if (category) { | |
| res.status(201).json(category); | |
| } else { | |
| res.status(400); | |
| throw new Error('无效的分类数据'); | |
| } | |
| }); | |
| // @desc 更新分类 | |
| // @route PUT /api/categories/:id | |
| // @access Private | |
| const updateCategory = asyncHandler(async (req, res) => { | |
| const { name, color } = req.body; | |
| const category = await Category.findById(req.params.id); | |
| if (category) { | |
| // 如果更改了名称,检查新名称是否已存在 | |
| if (name && name !== category.name) { | |
| const categoryExists = await Category.findOne({ name }); | |
| if (categoryExists) { | |
| res.status(400); | |
| throw new Error('分类名称已存在'); | |
| } | |
| } | |
| category.name = name || category.name; | |
| category.color = color || category.color; | |
| const updatedCategory = await category.save(); | |
| res.json(updatedCategory); | |
| } else { | |
| res.status(404); | |
| throw new Error('分类未找到'); | |
| } | |
| }); | |
| // @desc 删除分类 | |
| // @route DELETE /api/categories/:id | |
| // @access Private | |
| const deleteCategory = asyncHandler(async (req, res) => { | |
| const category = await Category.findById(req.params.id); | |
| if (!category) { | |
| res.status(404); | |
| throw new Error('分类未找到'); | |
| } | |
| // 检查是否有提示词组使用该分类 | |
| const groupsUsingCategory = await PromptGroup.countDocuments({ category: req.params.id }); | |
| if (groupsUsingCategory > 0) { | |
| res.status(400); | |
| throw new Error(`无法删除分类,有 ${groupsUsingCategory} 个提示词组正在使用它`); | |
| } | |
| await category.deleteOne(); | |
| res.json({ message: '分类已删除' }); | |
| }); | |
| module.exports = { | |
| getCategories, | |
| getCategoryById, | |
| createCategory, | |
| updateCategory, | |
| deleteCategory, | |
| }; |