comment.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. module.exports = function(crowi) {
  2. var debug = require('debug')('crowi:models:comment')
  3. , mongoose = require('mongoose')
  4. , ObjectId = mongoose.Schema.Types.ObjectId
  5. ;
  6. commentSchema = new mongoose.Schema({
  7. page: { type: ObjectId, ref: 'Page', index: true },
  8. creator: { type: ObjectId, ref: 'User', index: true },
  9. revision: { type: ObjectId, ref: 'Revision', index: true },
  10. comment: { type: String, required: true },
  11. commentPosition: { type: Number, default: -1 },
  12. createdAt: { type: Date, default: Date.now }
  13. });
  14. commentSchema.statics.create = function(pageId, creatorId, revisionId, comment, position) {
  15. var Comment = this,
  16. commentPosition = position || -1;
  17. return new Promise(function(resolve, reject) {
  18. var newComment = new Comment();
  19. newComment.page = pageId;
  20. newComment.creator = creatorId;
  21. newComment.revision = revisionId;
  22. newComment.comment = comment;
  23. newComment.commentPosition = position;
  24. newComment.save(function(err, data) {
  25. if (err) {
  26. debug('Error on saving comment.', err);
  27. return reject(err);
  28. }
  29. debug('Comment saved.', data);
  30. return resolve(data);
  31. });
  32. });
  33. };
  34. commentSchema.statics.getCommentsByPageId = function(id) {
  35. var self = this;
  36. return new Promise(function(resolve, reject) {
  37. self
  38. .find({page: id})
  39. .sort({'createdAt': -1})
  40. .populate('creator')
  41. .exec(function(err, data) {
  42. if (err) {
  43. return reject(err);
  44. }
  45. if (data.length < 1) {
  46. return resolve([]);
  47. }
  48. debug('Comment loaded', data);
  49. return resolve(data);
  50. });
  51. });
  52. };
  53. commentSchema.statics.getCommentsByRevisionId = function(id) {
  54. var self = this;
  55. return new Promise(function(resolve, reject) {
  56. self
  57. .find({revision: id})
  58. .sort({'createdAt': -1})
  59. .populate('creator')
  60. .exec(function(err, data) {
  61. if (err) {
  62. return reject(err);
  63. }
  64. if (data.length < 1) {
  65. return resolve([]);
  66. }
  67. debug('Comment loaded', data);
  68. return resolve(data);
  69. });
  70. });
  71. };
  72. return mongoose.model('Comment', commentSchema);
  73. };