revision.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. module.exports = function(crowi, app) {
  2. 'use strict';
  3. var debug = require('debug')('growi:routes:revision')
  4. , Page = crowi.model('Page')
  5. , Revision = crowi.model('Revision')
  6. , ApiResponse = require('../util/apiResponse')
  7. , actions = {}
  8. ;
  9. actions.api = {};
  10. /**
  11. * @api {get} /revisions.get Get revision
  12. * @apiName GetRevision
  13. * @apiGroup Revision
  14. *
  15. * @apiParam {String} revision_id Revision Id.
  16. */
  17. actions.api.get = function(req, res) {
  18. var revisionId = req.query.revision_id;
  19. Revision
  20. .findRevision(revisionId)
  21. .then(function(revisionData) {
  22. var result = {
  23. revision: revisionData,
  24. };
  25. return res.json(ApiResponse.success(result));
  26. })
  27. .catch(function(err) {
  28. debug('Error revisios.get', err);
  29. return res.json(ApiResponse.error(err));
  30. });
  31. };
  32. /**
  33. * @api {get} /revisions.ids Get revision id list of the page
  34. * @apiName ids
  35. * @apiGroup Revision
  36. *
  37. * @apiParam {String} page_id Page Id.
  38. */
  39. actions.api.ids = function(req, res) {
  40. const pageId = req.query.page_id || null;
  41. if (pageId && crowi.isPageId(pageId)) {
  42. Page.findPageByIdAndGrantedUser(pageId, req.user)
  43. .then(function(pageData) {
  44. debug('Page found', pageData._id, pageData.path);
  45. return Revision.findRevisionIdList(pageData.path);
  46. }).then(function(revisions) {
  47. return res.json(ApiResponse.success({revisions}));
  48. }).catch(function(err) {
  49. return res.json(ApiResponse.error(err));
  50. });
  51. }
  52. else {
  53. return res.json(ApiResponse.error('Parameter error.'));
  54. }
  55. };
  56. /**
  57. * @api {get} /revisions.list Get revisions
  58. * @apiName ListRevision
  59. * @apiGroup Revision
  60. *
  61. * @apiParam {String} revision_ids Revision Ids.
  62. * @apiParam {String} page_id Page Id.
  63. */
  64. actions.api.list = function(req, res) {
  65. const revisionIds = (req.query.revision_ids || '').split(',');
  66. const pageId = req.query.page_id || null;
  67. if (pageId) {
  68. Page.findPageByIdAndGrantedUser(pageId, req.user)
  69. .then(function(pageData) {
  70. debug('Page found', pageData._id, pageData.path);
  71. return Revision.findRevisionList(pageData.path, {});
  72. }).then(function(revisions) {
  73. return res.json(ApiResponse.success(revisions));
  74. }).catch(function(err) {
  75. return res.json(ApiResponse.error(err));
  76. });
  77. }
  78. else if (revisionIds.length > 0) {
  79. Revision.findRevisions(revisionIds)
  80. .then(function(revisions) {
  81. return res.json(ApiResponse.success(revisions));
  82. }).catch(function(err) {
  83. return res.json(ApiResponse.error(err));
  84. });
  85. }
  86. else {
  87. return res.json(ApiResponse.error('Parameter error.'));
  88. }
  89. };
  90. return actions;
  91. };