Просмотр исходного кода

Merge pull request #2334 from weseek/feat/create-apiv3-delete-share-link

Feat/create apiv3 delete share link
Yuki Takei 5 лет назад
Родитель
Сommit
312a9a8be4
1 измененных файлов с 40 добавлено и 6 удалено
  1. 40 6
      src/server/routes/apiv3/share-links.js

+ 40 - 6
src/server/routes/apiv3/share-links.js

@@ -1,13 +1,17 @@
 // TODO remove this setting after implemented all
 /* eslint-disable no-unused-vars */
-// const loggerFactory = require('@alias/logger');
+const loggerFactory = require('@alias/logger');
 
-// const logger = loggerFactory('growi:routes:apiv3:share-links');
+const logger = loggerFactory('growi:routes:apiv3:share-links');
 
 const express = require('express');
 
 const router = express.Router();
 
+const { body } = require('express-validator/check');
+
+const ErrorV3 = require('../../models/vo/error-apiv3');
+
 /**
  * @swagger
  *  tags:
@@ -16,6 +20,9 @@ const router = express.Router();
 
 module.exports = (crowi) => {
   const loginRequired = require('../../middleware/login-required')(crowi);
+  const csrf = require('../../middleware/csrf')(crowi);
+
+  const ShareLink = crowi.model('ShareLink');
 
   // TDOO write swagger
   router.get('/', loginRequired, async(req, res) => {
@@ -36,10 +43,37 @@ module.exports = (crowi) => {
     // TODO GW-2694 Delete all share links
   });
 
-  // TDOO write swagger
-  router.delete('/:id', loginRequired, async(req, res) => {
-    const { pageId } = req.body;
-    // TODO GW-2610 Remove specific share link
+  /**
+  * @swagger
+  *
+  *    /share-links/{id}:
+  *      delete:
+  *        tags: [ShareLinks]
+  *        description: delete one share link related one page
+  *        parameters:
+  *          - name: id
+  *            in: path
+  *            required: true
+  *            description: id of share link
+  *            schema:
+  *              type: string
+  *        responses:
+  *          200:
+  *            description: Succeeded to delete one share link
+  */
+  router.delete('/:id', loginRequired, csrf, async(req, res) => {
+    const { id } = req.params;
+
+    try {
+      const deletedShareLink = await ShareLink.findOneAndRemove({ _id: id });
+      return res.apiv3(deletedShareLink);
+    }
+    catch (err) {
+      const msg = 'Error occurred in delete share link';
+      logger.error('Error', err);
+      return res.apiv3Err(new ErrorV3(msg, 'delete-shareLink-failed'));
+    }
+
   });