| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- const loggerFactory = require('@alias/logger');
- const logger = loggerFactory('growi:routes:apiv3:pages'); // eslint-disable-line no-unused-vars
- const express = require('express');
- const router = express.Router();
- /**
- * @swagger
- * tags:
- * name: Pages
- */
- module.exports = (crowi) => {
- const loginRequired = require('../../middlewares/login-required')(crowi, true);
- const adminRequired = require('../../middlewares/admin-required')(crowi);
- const csrf = require('../../middlewares/csrf')(crowi);
- const Page = crowi.model('Page');
- /**
- * @swagger
- *
- * /pages/recent:
- * get:
- * tags: [Pages]
- * description: Get recently updated pages
- * responses:
- * 200:
- * description: Return pages recently updated
- *
- */
- router.get('/recent', loginRequired, async(req, res) => {
- const limit = 20;
- const offset = parseInt(req.query.offset) || 0;
- const queryOptions = {
- offset,
- limit,
- includeTrashed: false,
- isRegExpEscapedFromPath: true,
- sort: 'updatedAt',
- desc: -1,
- };
- try {
- const result = await Page.findListWithDescendants('/', req.user, queryOptions);
- if (result.pages.length > limit) {
- result.pages.pop();
- }
- return res.apiv3(result);
- }
- catch (err) {
- res.code = 'unknown';
- logger.error('Failed to get recent pages', err);
- return res.apiv3Err(err, 500);
- }
- });
- /**
- * @swagger
- *
- * /pages/empty-trash:
- * delete:
- * tags: [Pages]
- * description: empty trash
- * responses:
- * 200:
- * description: Succeeded to remove all trash pages
- */
- router.delete('/empty-trash', loginRequired, adminRequired, csrf, async(req, res) => {
- try {
- const pages = await Page.completelyDeletePageRecursively('/trash', req.user);
- return res.apiv3({ pages });
- }
- catch (err) {
- res.code = 'unknown';
- logger.error('Failed to delete trash pages', err);
- return res.apiv3Err(err, 500);
- }
- });
- /**
- * @swagger
- *
- * /pages/export:
- * get:
- * tags: [Export]
- * description: get currently page file as md or pdf
- * responses:
- * 200:
- * description: Return currently page file
- */
- router.get('/export', async(req, res) => {
- // TODO use res.apiv3
- return res.json({ ok: true });
- });
- return router;
- };
|