Files
d1kt/server/routes/codeExamples.ts

80 lines
2.1 KiB
TypeScript

import express from 'express';
import { CodeExample } from '../models/CodeExample';
const router = express.Router();
// 获取所有代码示例
router.get('/', async (req, res) => {
try {
const examples = await CodeExample.find().sort({ createdAt: -1 });
res.json(examples);
} catch (error) {
res.status(500).json({ message: 'Error fetching code examples' });
}
});
// 获取特定难度级别的代码示例
router.get('/:level', async (req, res) => {
try {
const { level } = req.params;
// 验证难度级别是否有效
const validLevels = ['basic', 'intermediate', 'advanced'];
if (!validLevels.includes(level)) {
return res.status(400).json({ message: '无效的代码难度级别' });
}
// 查找匹配难度级别的代码示例
const example = await CodeExample.findOne({ level }).sort({ createdAt: -1 });
if (!example) {
return res.status(404).json({ message: '未找到该难度级别的代码示例' });
}
// 返回代码示例内容
res.json({
content: example.content,
level: example.level,
title: example.title
});
} catch (error) {
console.error('获取代码示例错误:', error);
res.status(500).json({ message: '获取代码示例失败' });
}
});
// 创建新代码示例
router.post('/', async (req, res) => {
try {
const example = new CodeExample(req.body);
await example.save();
res.status(201).json(example);
} catch (error) {
res.status(500).json({ message: 'Error creating code example' });
}
});
// 更新代码示例
router.put('/:id', async (req, res) => {
try {
const example = await CodeExample.findByIdAndUpdate(
req.params.id,
req.body,
{ new: true }
);
res.json(example);
} catch (error) {
res.status(500).json({ message: 'Error updating code example' });
}
});
// 删除代码示例
router.delete('/:id', async (req, res) => {
try {
await CodeExample.findByIdAndDelete(req.params.id);
res.status(204).send();
} catch (error) {
res.status(500).json({ message: 'Error deleting code example' });
}
});
export default router;