mirror of
https://github.com/wassname/talk.git
synced 2026-07-21 12:51:03 +08:00
147 lines
4.0 KiB
JavaScript
147 lines
4.0 KiB
JavaScript
const express = require('express');
|
|
const Comment = require('../../../models/comment');
|
|
|
|
const Setting = require('../../../models/setting');
|
|
|
|
const router = express.Router();
|
|
|
|
//==============================================================================
|
|
// Get Routes
|
|
//==============================================================================
|
|
|
|
router.get('/', (req, res, next) => {
|
|
Comment.find({}).then((comments) => {
|
|
res.status(200).json(comments);
|
|
})
|
|
.catch(next);
|
|
});
|
|
|
|
router.get('/:comment_id', (req, res, next) => {
|
|
Comment
|
|
.findById(req.params.comment_id)
|
|
.then(comment => {
|
|
res.status(200).json(comment);
|
|
})
|
|
.catch(next);
|
|
});
|
|
|
|
//==============================================================================
|
|
// Moderation Queues Routes
|
|
//==============================================================================
|
|
|
|
// Get all the comments that have that action_type over them.
|
|
router.get('/action/:action_type', (req, res, next) => {
|
|
Comment
|
|
.findByActionType(req.params.action_type)
|
|
.then((comments) => {
|
|
res.status(200).json(comments);
|
|
})
|
|
.catch(next);
|
|
});
|
|
|
|
// Get all the comments that were rejected.
|
|
router.get('/status/rejected', (req, res, next) => {
|
|
Comment
|
|
.findByStatus('rejected')
|
|
.then(comments => {
|
|
res.status(200).json(comments);
|
|
})
|
|
.catch(next);
|
|
});
|
|
|
|
// Returns back all the comments that are in the moderation queue. The moderation queue is pre or post moderated,
|
|
// depending on the settings. The :moderation overwrites this settings.
|
|
// Pre-moderation: New comments are shown in the moderator queues immediately.
|
|
// Post-moderation: New comments do not appear in moderation queues unless they are flagged by other users.
|
|
router.get('/status/pending', (req, res, next) => {
|
|
|
|
Setting
|
|
.getModerationSetting()
|
|
.then(({moderation}) => {
|
|
let moderationValue = req.query.moderation;
|
|
if (typeof moderationValue === 'undefined' || moderationValue === undefined) {
|
|
moderationValue = moderation;
|
|
}
|
|
Comment
|
|
.moderationQueue(moderationValue)
|
|
.then((comments) => {
|
|
res.status(200).json(comments);
|
|
});
|
|
})
|
|
.catch(next);
|
|
});
|
|
|
|
//==============================================================================
|
|
// Post Routes
|
|
//==============================================================================
|
|
|
|
router.post('/', (req, res, next) => {
|
|
|
|
const {body, author_id, asset_id, parent_id, status, username} = req.body;
|
|
|
|
Comment
|
|
.new(body, author_id, asset_id, parent_id, status, username)
|
|
.then((comment) => {
|
|
res.status(200).send({'id': comment.id});
|
|
})
|
|
.catch(error => {
|
|
next(error);
|
|
});
|
|
});
|
|
|
|
router.post('/:comment_id', (req, res, next) => {
|
|
Comment
|
|
.findById(req.params.comment_id)
|
|
.then((comment) => {
|
|
comment.body = req.body.body;
|
|
comment.author_id = req.body.author_id;
|
|
comment.asset_id = req.body.asset_id;
|
|
comment.parent_id = req.body.parent_id;
|
|
comment.status = req.body.status;
|
|
return comment.save();
|
|
})
|
|
.then((comment) => {
|
|
res.status(200).send(comment);
|
|
})
|
|
.catch(error => {
|
|
next(error);
|
|
});
|
|
});
|
|
|
|
router.post('/:comment_id/status', (req, res, next) => {
|
|
|
|
Comment
|
|
.changeStatus(req.params.comment_id, req.body.status)
|
|
.then(comment => res.status(200).send(comment))
|
|
.catch(error => next(error));
|
|
|
|
});
|
|
|
|
router.post('/:comment_id/actions', (req, res, next) => {
|
|
Comment
|
|
.addAction(req.params.comment_id, req.body.user_id, req.body.action_type)
|
|
.then((action) => {
|
|
res.status(200).send(action);
|
|
})
|
|
.catch(error => {
|
|
next(error);
|
|
});
|
|
});
|
|
|
|
//==============================================================================
|
|
// Delete Routes
|
|
//==============================================================================
|
|
|
|
router.delete('/:comment_id', (req, res, next) => {
|
|
Comment
|
|
.removeById(req.params.comment_id)
|
|
.then(() => {
|
|
res.status(201).send('OK. Removed');
|
|
})
|
|
.catch(error => {
|
|
next(error);
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|