mb672038's picture
می خوام توضیحاتی که دادم واقعی باشه python-learning-platform/
b3c8917 verified
Raw
History Blame Contribute Delete
1.61 kB
const express = require('express');
const Course = require('../models/Course');
const auth = require('../middleware/auth');
const router = express.Router();
// Get all courses
router.get('/', async (req, res) => {
try {
const { category, level, featured } = req.query;
const query = {};
if (category) query.category = category;
if (level) query.level = level;
if (featured) query.isFeatured = featured === 'true';
const courses = await Course.find(query)
.populate('instructor', 'username profile.fullName')
.sort({ createdAt: -1 });
res.json(courses);
} catch (err) {
res.status(500).json({ message: 'Server error' });
}
});
// Get single course
router.get('/:id', async (req, res) => {
try {
const course = await Course.findById(req.params.id)
.populate('instructor', 'username profile.fullName profile.bio profile.avatar')
.populate('lessons.quiz');
if (!course) return res.status(404).json({ message: 'Course not found' });
res.json(course);
} catch (err) {
res.status(500).json({ message: 'Server error' });
}
});
// Create course (admin/instructor only)
router.post('/', auth, async (req, res) => {
try {
if (req.user.role !== 'admin' && req.user.role !== 'instructor') {
return res.status(403).json({ message: 'Not authorized' });
}
const course = new Course({
...req.body,
instructor: req.user.id
});
await course.save();
res.status(201).json(course);
} catch (err) {
res.status(500).json({ message: 'Server error' });
}
});
module.exports = router;