66 lines
2.2 KiB
JavaScript
66 lines
2.2 KiB
JavaScript
import express from 'express';
|
|
import pool from '../database.js';
|
|
|
|
const router = express.Router();
|
|
|
|
// GET all achievements
|
|
router.get('/', async (req, res) => {
|
|
try {
|
|
const [rows] = await pool.execute(`
|
|
SELECT id, student_id as studentId, title, level, date, score_reduction as scoreReduction
|
|
FROM achievements
|
|
ORDER BY date DESC
|
|
`);
|
|
res.json(rows);
|
|
} catch (error) {
|
|
console.error('Error fetching achievements:', error);
|
|
res.status(500).json({ error: 'Failed to fetch achievements' });
|
|
}
|
|
});
|
|
|
|
// GET achievements by student
|
|
router.get('/student/:studentId', async (req, res) => {
|
|
try {
|
|
const [rows] = await pool.execute(`
|
|
SELECT id, student_id as studentId, title, level, date, score_reduction as scoreReduction
|
|
FROM achievements
|
|
WHERE student_id = ?
|
|
ORDER BY date DESC
|
|
`, [req.params.studentId]);
|
|
res.json(rows);
|
|
} catch (error) {
|
|
console.error('Error fetching student achievements:', error);
|
|
res.status(500).json({ error: 'Failed to fetch achievements' });
|
|
}
|
|
});
|
|
|
|
// POST create achievement
|
|
router.post('/', async (req, res) => {
|
|
try {
|
|
const { id, studentId, title, level, date, scoreReduction } = req.body;
|
|
|
|
await pool.execute(`
|
|
INSERT INTO achievements (id, student_id, title, level, date, score_reduction)
|
|
VALUES (?, ?, ?, ?, ?, ?)
|
|
`, [id || Date.now().toString(), studentId, title, level, date || new Date().toISOString().split('T')[0], scoreReduction]);
|
|
|
|
res.status(201).json({ status: 'success', message: 'Achievement recorded' });
|
|
} catch (error) {
|
|
console.error('Error creating achievement:', error);
|
|
res.status(500).json({ error: 'Failed to create achievement' });
|
|
}
|
|
});
|
|
|
|
// DELETE achievement
|
|
router.delete('/:id', async (req, res) => {
|
|
try {
|
|
await pool.execute('DELETE FROM achievements WHERE id = ?', [req.params.id]);
|
|
res.json({ status: 'success', message: 'Achievement deleted' });
|
|
} catch (error) {
|
|
console.error('Error deleting achievement:', error);
|
|
res.status(500).json({ error: 'Failed to delete achievement' });
|
|
}
|
|
});
|
|
|
|
export default router;
|