Browse Source

create endpoint for tag list

yusuketk 7 năm trước cách đây
mục cha
commit
36c70247cf

+ 1 - 0
src/server/routes/index.js

@@ -203,6 +203,7 @@ module.exports = function(crowi, app) {
   app.post('/_api/pages.unlink'       , loginRequired(crowi, app) , csrf, page.api.unlink); // (Avoid from API Token)
   app.post('/_api/pages.unlink'       , loginRequired(crowi, app) , csrf, page.api.unlink); // (Avoid from API Token)
   app.post('/_api/pages.duplicate', accessTokenParser, loginRequired(crowi, app), csrf, page.api.duplicate);
   app.post('/_api/pages.duplicate', accessTokenParser, loginRequired(crowi, app), csrf, page.api.duplicate);
   app.get('/_tags', loginRequired(crowi, app, false), tag.showPage);
   app.get('/_tags', loginRequired(crowi, app, false), tag.showPage);
+  app.get('/_api/tags.list'           , accessTokenParser, loginRequired(crowi, app, false), tag.api.list);
   app.get('/_api/tags.search'         , accessTokenParser, loginRequired(crowi, app, false), tag.api.search);
   app.get('/_api/tags.search'         , accessTokenParser, loginRequired(crowi, app, false), tag.api.search);
   app.get('/_api/comments.get'        , accessTokenParser , loginRequired(crowi, app, false) , comment.api.get);
   app.get('/_api/comments.get'        , accessTokenParser , loginRequired(crowi, app, false) , comment.api.get);
   app.post('/_api/comments.add'       , form.comment, accessTokenParser , loginRequired(crowi, app) , csrf, comment.api.add);
   app.post('/_api/comments.add'       , form.comment, accessTokenParser , loginRequired(crowi, app) , csrf, comment.api.add);

+ 23 - 0
src/server/routes/tag.js

@@ -24,5 +24,28 @@ module.exports = function(crowi, app) {
     return res.json(ApiResponse.success({ tags }));
     return res.json(ApiResponse.success({ tags }));
   };
   };
 
 
+  /**
+   * @api {get} /tags.list get tagnames and count pages relate each tag
+   * @apiName tagList
+   * @apiGroup Tag
+   */
+  api.list = async function(req, res) {
+    const PageTagRelation = crowi.model('PageTagRelation');
+
+    const tags = await Tag.find();
+    const result = [];
+
+    /* eslint-disable no-await-in-loop */
+    for (const tag of tags) {
+      const data = {};
+      data.tagName = tag.name;
+      data.countPage = await PageTagRelation.count({ relatedTag: tag.id });
+      result.push(data);
+    }
+
+    return res.json(ApiResponse.success(result));
+  };
+
+
   return actions;
   return actions;
 };
 };