mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-07-19 05:09:41 +02:00
* save ordering pages * move to another collection * requested changes. Code improvements * add margin * unit tests * fix * requested changes * recursive method: create menu tree * update comments * fix bug * requested changes * move const * fix error message on catch * add migration * rewrite to splices * move methods * testing put above method * linter fix
128 lines
2.4 KiB
JavaScript
128 lines
2.4 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const multer = require('multer')();
|
|
const Pages = require('../../controllers/pages');
|
|
const PagesOrder = require('../../controllers/pagesOrder');
|
|
|
|
/**
|
|
* GET /page/:id
|
|
*
|
|
* Return PageData of page with given id
|
|
*/
|
|
router.get('/page/:id', async (req, res) => {
|
|
try {
|
|
const page = await Pages.get(req.params.id);
|
|
|
|
res.json({
|
|
success: true,
|
|
result: page.data
|
|
});
|
|
} catch (err) {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: err.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* GET /pages
|
|
*
|
|
* Return PageData for all pages
|
|
*/
|
|
router.get('/pages', async (req, res) => {
|
|
try {
|
|
const pages = await Pages.getAll();
|
|
|
|
res.json({
|
|
success: true,
|
|
result: pages
|
|
});
|
|
} catch (err) {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: err.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* PUT /page
|
|
*
|
|
* Create new page in the database
|
|
*/
|
|
router.put('/page', multer.any(), async (req, res) => {
|
|
try {
|
|
const {title, body, parent} = req.body;
|
|
const page = await Pages.insert({title, body, parent});
|
|
|
|
/** push to the orders array */
|
|
await PagesOrder.push(parent, page._id);
|
|
|
|
res.json({
|
|
success: true,
|
|
result: page
|
|
});
|
|
} catch (err) {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: err.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* POST /page/:id
|
|
*
|
|
* Update page data in the database
|
|
*/
|
|
router.post('/page/:id', multer.any(), async (req, res) => {
|
|
const {id} = req.params;
|
|
|
|
try {
|
|
const {title, body, parent, putAbovePageId} = req.body;
|
|
let page = await Pages.get(id);
|
|
|
|
if (page._parent !== parent) {
|
|
await PagesOrder.move(page._parent, parent, id);
|
|
} else {
|
|
if (putAbovePageId && putAbovePageId !== '0') {
|
|
await PagesOrder.update(page._id, page._parent, putAbovePageId);
|
|
}
|
|
}
|
|
|
|
page = await Pages.update(id, {title, body, parent});
|
|
res.json({
|
|
success: true,
|
|
result: page
|
|
});
|
|
} catch (err) {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: err.message
|
|
});
|
|
}
|
|
});
|
|
|
|
/**
|
|
* DELETE /page/:id
|
|
*
|
|
* Remove page from the database
|
|
*/
|
|
router.delete('/page/:id', async (req, res) => {
|
|
try {
|
|
const page = await Pages.remove(req.params.id);
|
|
|
|
res.json({
|
|
success: true,
|
|
result: page
|
|
});
|
|
} catch (err) {
|
|
res.status(400).json({
|
|
success: false,
|
|
error: err.message
|
|
});
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|