Skip to content

Commit

Permalink
Merge pull request #60 from andela/ft/168452358-get-likers-of-a-resource
Browse files Browse the repository at this point in the history
#168452358 Implemements get resource a user likes
  • Loading branch information
chuxmykel committed Sep 12, 2019
2 parents 3d2fe5e + 9ea879a commit 4d4aef0
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 3 deletions.
31 changes: 31 additions & 0 deletions server/controllers/articleController.js
Original file line number Diff line number Diff line change
Expand Up @@ -541,6 +541,37 @@ class ArticleController {
data: paginatedResult.rows[0].Articles
});
}


/**
* @description Gets user who likes a certain post
* @param {Object} req - request object
* @param {Object} res - response object
* @returns {String} returns a link to the article on twitter website
*/
static async getLikerOfAnArticle(req, res) {
const { params: { resourceId }, query: { type } } = req;
const { user } = req;
if (!user) {
return res.status(401).json({
status: 401,
message: 'user not logged in'
});
}
const hasLiked = await models.Likes.findOne({
where: {
resourceId,
userId: user.id,
type
},
attributes: ['likes'],
});
if (!hasLiked) return res.status(202).json({ status: 202, error: `user has not liked this ${type}` });
return res.status(201).json({
status: 201,
data: hasLiked,
});
}
}

export default ArticleController;
2 changes: 1 addition & 1 deletion server/controllers/commentController.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ export default class CommentController {
{
model: models.User,
as: 'author',
attributes: ['username', 'firstname', 'image']
attributes: ['username', 'firstname', 'lastname', 'image']
},
{
model: models.Article,
Expand Down
6 changes: 4 additions & 2 deletions server/routes/likes.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ import middlewares from '../middlewares';
const router = express.Router();

const {
verifyToken, validateLikes, isActive
verifyToken, validateLikes, isActive, optionalLogin
} = middlewares;

const {
likeOrDislikeArticle
likeOrDislikeArticle,
getLikerOfAnArticle
} = ArticleController;

router.post('/:resourceId', verifyToken, isActive, validateLikes, likeOrDislikeArticle);
router.get('/:resourceId', optionalLogin, getLikerOfAnArticle);

export default router;

0 comments on commit 4d4aef0

Please sign in to comment.