59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const router = require('express').Router();
|
|
|
|
module.exports = router;
|
|
|
|
const data = require('./data/units.json');
|
|
router.get('/', (req, res) => {
|
|
res.send(data);
|
|
});
|
|
|
|
router.put('/', (req, res) => {
|
|
const newUnit = req.body
|
|
|
|
if (!newUnit) {
|
|
return res.status(400).send('No new unit to be added')
|
|
}
|
|
|
|
if (!data) {
|
|
return res.status(500).send('No data to be updated')
|
|
}
|
|
|
|
data.push({ "id": data.length, ...newUnit })
|
|
|
|
fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data));
|
|
res.status(200).send(data);
|
|
});
|
|
|
|
router.delete('/:id', (req, res) => {
|
|
const id = parseInt(req.params.id);
|
|
const index = data.findIndex((unit) => unit.id === id);
|
|
|
|
if (index < 0) {
|
|
return res.status(404).send('Not found');
|
|
}
|
|
|
|
data.splice(index, 1);
|
|
fs.writeFileSync(path.join(__dirname, 'data', 'units.json'), JSON.stringify(data));
|
|
res.send({ message: `Unit with ID ${id} deleted` });
|
|
});
|
|
|
|
router.get('/:id', (req, res) => {
|
|
const id = parseInt(req.params.id);
|
|
const unit = data.find((unit) => unit.id === id);
|
|
|
|
if (!unit) {
|
|
return res.status(404).send('Not found');
|
|
}
|
|
|
|
const unitFilepath = path.join(__dirname, 'data', `${unit.filename}.md`);
|
|
const unitContent = fs.readFileSync(unitFilepath, 'utf-8');
|
|
|
|
if (!unitContent) {
|
|
return res.status(404).send('Not found');
|
|
}
|
|
|
|
res.send({ ...unit, content: unitContent });
|
|
});
|