revision.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. return res.json(ApiResponse.success(revisionData));
  23. })
  24. .catch(function(err) {
  25. return res.json(ApiResponse.error(err));
  26. });
  27. };
  28. /**
  29. * @api {get} /revisions.ids Get revision id list of the page
  30. * @apiName ids
  31. * @apiGroup Revision
  32. *
  33. * @apiParam {String} page_id Page Id.
  34. */
  35. actions.api.ids = function(req, res) {
  36. var pageId = req.query.page_id || null;
  37. if (pageId && crowi.isPageId(pageId)) {
  38. Page.findPageByIdAndGrantedUser(pageId, req.user)
  39. .then(function(pageData) {
  40. debug('Page found', pageData._id, pageData.path);
  41. return Revision.findRevisionIdList(pageData.path);
  42. }).then(function(revisions) {
  43. return res.json(ApiResponse.success({revisions}));
  44. }).catch(function(err) {
  45. return res.json(ApiResponse.error(err));
  46. });
  47. } else {
  48. return res.json(ApiResponse.error('Parameter error.'));
  49. }
  50. };
  51. /**
  52. * @api {get} /revisions.list Get revisions
  53. * @apiName ListRevision
  54. * @apiGroup Revision
  55. *
  56. * @apiParam {String} revision_ids Revision Ids.
  57. * @apiParam {String} page_id Page Id.
  58. */
  59. actions.api.list = function(req, res) {
  60. var revisionIds = (req.query.revision_ids || '').split(',');
  61. var pageId = req.query.page_id || null;
  62. if (pageId) {
  63. Page.findPageByIdAndGrantedUser(pageId, req.user)
  64. .then(function(pageData) {
  65. debug('Page found', pageData._id, pageData.path);
  66. return Revision.findRevisionList(pageData.path, {});
  67. }).then(function(revisions) {
  68. return res.json(ApiResponse.success(revisions));
  69. }).catch(function(err) {
  70. return res.json(ApiResponse.error(err));
  71. });
  72. } else if (revisionIds.length > 0) {
  73. Revision.findRevisions(revisionIds)
  74. .then(function(revisions) {
  75. return res.json(ApiResponse.success(revisions));
  76. }).catch(function(err) {
  77. return res.json(ApiResponse.error(err));
  78. });
  79. } else {
  80. return res.json(ApiResponse.error('Parameter error.'));
  81. }
  82. };
  83. return actions;
  84. };