revision.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. module.exports = function(crowi, app) {
  2. 'use strict';
  3. var debug = require('debug')('crowi: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. var 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. } else {
  52. return res.json(ApiResponse.error('Parameter error.'));
  53. }
  54. };
  55. /**
  56. * @api {get} /revisions.list Get revisions
  57. * @apiName ListRevision
  58. * @apiGroup Revision
  59. *
  60. * @apiParam {String} revision_ids Revision Ids.
  61. * @apiParam {String} page_id Page Id.
  62. */
  63. actions.api.list = function(req, res) {
  64. var revisionIds = (req.query.revision_ids || '').split(',');
  65. var pageId = req.query.page_id || null;
  66. if (pageId) {
  67. Page.findPageByIdAndGrantedUser(pageId, req.user)
  68. .then(function(pageData) {
  69. debug('Page found', pageData._id, pageData.path);
  70. return Revision.findRevisionList(pageData.path, {});
  71. }).then(function(revisions) {
  72. return res.json(ApiResponse.success(revisions));
  73. }).catch(function(err) {
  74. return res.json(ApiResponse.error(err));
  75. });
  76. } else if (revisionIds.length > 0) {
  77. Revision.findRevisions(revisionIds)
  78. .then(function(revisions) {
  79. return res.json(ApiResponse.success(revisions));
  80. }).catch(function(err) {
  81. return res.json(ApiResponse.error(err));
  82. });
  83. } else {
  84. return res.json(ApiResponse.error('Parameter error.'));
  85. }
  86. };
  87. return actions;
  88. };