mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-01-15 11:52:23 +01:00
207 lines
4.8 KiB
JavaScript
207 lines
4.8 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Module dependencies
|
|
*/
|
|
var path = require('path'),
|
|
config = require(path.resolve('./config/config')),
|
|
mongoose = require('mongoose'),
|
|
errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')),
|
|
User = mongoose.model('User'),
|
|
Peer = mongoose.model('Peer'),
|
|
Torrent = mongoose.model('Torrent'),
|
|
Comment = mongoose.model('Comment'),
|
|
async = require('async');
|
|
|
|
/**
|
|
* create a comment of torrent
|
|
* @param req
|
|
* @param res
|
|
*/
|
|
exports.create = function (req, res) {
|
|
var comment = new Comment();
|
|
comment.comment = req.body.comment;
|
|
comment.user = req.user;
|
|
|
|
var torrent = req.torrent;
|
|
torrent._replies.push(comment);
|
|
|
|
torrent.save(function (err) {
|
|
if (err) {
|
|
return res.status(422).send({
|
|
message: errorHandler.getErrorMessage(err)
|
|
});
|
|
} else {
|
|
Torrent.populate(torrent._replies, {
|
|
path: 'user',
|
|
select: 'displayName profileImageURL uploaded downloaded'
|
|
}, function (err, t) {
|
|
if (err) {
|
|
return res.status(422).send({
|
|
message: errorHandler.getErrorMessage(err)
|
|
});
|
|
} else {
|
|
res.json(torrent);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* update a comment of torrent
|
|
* @param req
|
|
* @param res
|
|
*/
|
|
exports.update = function (req, res) {
|
|
var torrent = req.torrent;
|
|
|
|
torrent._replies.forEach(function (r) {
|
|
if (r._id.equals(req.params.commentId)) {
|
|
r.comment = req.body.comment;
|
|
r.editedat = Date.now();
|
|
r.editedby = req.user.displayName;
|
|
|
|
torrent.save(function (err, t, numAffected) {
|
|
if (err) {
|
|
return res.status(422).send({
|
|
message: errorHandler.getErrorMessage(err)
|
|
});
|
|
} else {
|
|
//console.log('numAffected: ' + numAffected);
|
|
res.json(torrent);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* delete a comment of torrent
|
|
* @param req
|
|
* @param res
|
|
*/
|
|
exports.delete = function (req, res) {
|
|
var torrent = req.torrent;
|
|
|
|
torrent._replies.forEach(function (r) {
|
|
if (r._id.equals(req.params.commentId)) {
|
|
torrent._replies.pull(r);
|
|
torrent.save(function (err) {
|
|
if (err) {
|
|
return res.status(422).send({
|
|
message: errorHandler.getErrorMessage(err)
|
|
});
|
|
} else {
|
|
res.json(torrent);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* create a sub comment of comment
|
|
* @param req
|
|
* @param res
|
|
*/
|
|
exports.SubCreate = function (req, res) {
|
|
var comment_to = undefined;
|
|
var torrent = req.torrent;
|
|
var comment = new Comment();
|
|
comment.comment = req.body.comment;
|
|
comment.user = req.user;
|
|
|
|
torrent._replies.forEach(function (r) {
|
|
if (r._id.equals(req.params.commentId)) {
|
|
r._replies.push(comment);
|
|
comment_to = r;
|
|
}
|
|
});
|
|
|
|
torrent.save(function (err) {
|
|
if (err) {
|
|
return res.status(422).send({
|
|
message: errorHandler.getErrorMessage(err)
|
|
});
|
|
} else {
|
|
Torrent.populate(comment_to._replies, {
|
|
path: 'user',
|
|
select: 'displayName profileImageURL uploaded downloaded'
|
|
}, function (err, t) {
|
|
if (err) {
|
|
return res.status(422).send({
|
|
message: errorHandler.getErrorMessage(err)
|
|
});
|
|
} else {
|
|
res.json(torrent);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* update a sub comment of comment
|
|
* @param req
|
|
* @param res
|
|
*/
|
|
exports.SubUpdate = function (req, res) {
|
|
var torrent = req.torrent;
|
|
|
|
torrent._replies.forEach(function (r) {
|
|
if (r._id.equals(req.params.commentId)) {
|
|
r._replies.forEach(function (s) {
|
|
if (s._id.equals(req.params.subCommentId)) {
|
|
s.comment = req.body.comment;
|
|
s.editedat = Date.now();
|
|
s.editedby = req.user.displayName;
|
|
|
|
torrent.markModified('_replies');
|
|
torrent.save(function (err, t, numAffected) {
|
|
if (err) {
|
|
return res.status(422).send({
|
|
message: errorHandler.getErrorMessage(err)
|
|
});
|
|
} else {
|
|
//console.log('numAffected: ' + numAffected);
|
|
res.json(torrent);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* delete a sub comment of comment
|
|
* @param req
|
|
* @param res
|
|
*/
|
|
exports.SubDelete = function (req, res) {
|
|
var torrent = req.torrent;
|
|
|
|
torrent._replies.forEach(function (r) {
|
|
if (r._id.equals(req.params.commentId)) {
|
|
r._replies.forEach(function (s) {
|
|
if (s._id.equals(req.params.subCommentId)) {
|
|
console.log(r._id + '-' + s._id);
|
|
r._replies.pull(s);
|
|
|
|
torrent.markModified('_replies');
|
|
torrent.save(function (err) {
|
|
if (err) {
|
|
return res.status(422).send({
|
|
message: errorHandler.getErrorMessage(err)
|
|
});
|
|
} else {
|
|
res.json(torrent);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|