Skip to content

Commit

Permalink
bg(refactoring): Code refactoring
Browse files Browse the repository at this point in the history
- Refacator likeCommentHelper.js file
- Refacator likeCommentHelper.js file

[(Finishes)]
  • Loading branch information
Joseph Nkurunziza committed Jul 24, 2019
1 parent d316eee commit 52cea4c
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 133 deletions.
35 changes: 10 additions & 25 deletions src/controllers/helpers/likeAndDislikes.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,32 @@ const { Op } = Sequelize;

const { LikeAndDislike } = model;
class LikesDislikesHelpers {
static async findArticleLikes(id, findArticleId) {
static async findArticleLikes(id, articleId) {
const liked = await LikeAndDislike.findAll({ where: { userId: id,
articleId: findArticleId,
articleId,
likes: true } });

return liked;
}

static async userLikedOrDiskedArticle(id, findArticleId) {
static async userLikedOrDiskedArticle(id, articleId) {
const userReacted = await LikeAndDislike.findAll({ where: { userId: id,
articleId: findArticleId } });
articleId } });

return userReacted;
}

static async findUnlikedArticle(id, findArticleId, object1, object2) {
static async findUnlikedArticle(id, articleId, object1, object2) {
const unlikedArticle = await LikeAndDislike.findAll({ where: { userId: id,
articleId: findArticleId,
articleId,
[Op.or]: [object1, object2] } });

return unlikedArticle;
}

static async findDisliked(id, findArticleId) {
static async findDisliked(id, articleId) {
const disliked = await LikeAndDislike.findAll({ where: { userId: id,
articleId: findArticleId,
articleId,
dislikes: true } });
return disliked;
}
Expand All @@ -57,24 +57,9 @@ class LikesDislikesHelpers {
return updateFromDislikeToLike;
}

// static async countArticleLikes(articleId) {
// const likes = await LikeAndDislike.count({ where: { articleId,
// likes: true } });

// return likes;
// }

// static async countArticleDisikes(articleId) {
// const dislikes = await LikeAndDislike.count({ where: { articleId,
// dislikes: true } });

// return dislikes;
// }

static async countArticleDisikesLikes(object) {
const dislikes = await LikeAndDislike.count(object);

return dislikes;
const likesDislikes = await LikeAndDislike.count(object);
return likesDislikes;
}
}

Expand Down
55 changes: 11 additions & 44 deletions src/controllers/helpers/likeCommentHelper.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,86 +9,53 @@ const { LikeAndDislike } = model;
const userLikedOrDiskedComment = async (id, commentId) => {
const userReacted = await LikeAndDislike.findAll({ where: { userId: id,
commentId } });

return userReacted;
};

const findDislikedComment = async (id, commentId) => {
const dislikedComment = await LikeAndDislike.findAll({ where: { userId: id,
commentId,
[Op.or]: [{ likes: false }, { dislikes: true }] } });

return dislikedComment;
};

const findLikedComment = async (id, commentId) => {
const findLikedOrDislikedComment = async (id, commentId, object1, object2) => {
const unlikedArticle = await LikeAndDislike.findAll({ where: { userId: id,
commentId,
[Op.or]: [{ dislikes: false }, { likes: true }] } });

[Op.or]: [object1, object2] } });
return unlikedArticle;
};

const findDisliked = async (id, commentId) => {
const disliked = await LikeAndDislike.findAll({ where: { userId: id,
commentId,
dislikes: true } });

return disliked;
};

const ChangeFromDislikeToLike = async (dislikeId) => {
const updateFromDislikeToLike = await LikeAndDislike.update({ dislikes: false, likes: true },
{ where: { id: dislikeId } });

return updateFromDislikeToLike;
};

const ChangeFromLikeToDisLike = async (dislikeId) => {
const updateFromDislikeToLike = await LikeAndDislike.update({ dislikes: true, likes: false },
{ where: { id: dislikeId } });

const ChangeLikeOrDislikeStatus = async (object, likesDislikeId) => {
const updateFromDislikeToLike = await LikeAndDislike.update(object,
{ where: { id: likesDislikeId } });
return updateFromDislikeToLike;
};

const findCommentLikes = async (id, commentId) => {
const liked = await LikeAndDislike.findAll({ where: { userId: id,
commentId,
likes: true } });

return liked;
};

const undoLikeOrDislikeComments = async (commentLike) => {
const unlikeComment = await LikeAndDislike.update({ likes: false, dislikes: false },
{ where: { id: commentLike } });

return unlikeComment;
};

const countCommentLikes = async (commentId) => {
const likes = await LikeAndDislike.count({ where: { commentId,
likes: true } });

return likes;
};

const countCommentDislikes = async (commentId) => {
const dislikes = await LikeAndDislike.count({ where: { commentId,
dislikes: true } });

return dislikes;
const countArticleDisikesLikes = async (object) => {
const likesDislikes = await LikeAndDislike.count(object);
return likesDislikes;
};

export {
countCommentDislikes,
countCommentLikes,
countArticleDisikesLikes,
undoLikeOrDislikeComments,
findCommentLikes,
ChangeFromLikeToDisLike,
ChangeFromDislikeToLike,
findDisliked,
findLikedComment,
findDislikedComment,
ChangeLikeOrDislikeStatus,
findLikedOrDislikedComment,
userLikedOrDiskedComment
};
33 changes: 9 additions & 24 deletions src/controllers/likeAndDislike.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ class LikesAndDislikes {
if (!article) return res.status(404).json({ message: 'Article not found' });

const liked = await LikesDislikesHelpers.findArticleLikes(id, articleId);
const disliked = await LikesDislikesHelpers.findDisliked(id, articleId);
const unlikedArticle = await LikesDislikesHelpers.findUnlikedArticle(id,
articleId, { dislikes: false }, { dislikes: null });
articleId, { dislikes: true }, { likes: false });
const userReacted = await LikesDislikesHelpers.userLikedOrDiskedArticle(id, articleId);

if (!userReacted[0]) {
await LikeAndDislike.create({ userId: id,
articleId: article.id,
likes: true });
likes: true,
dislikes: false });
const likes = await LikesDislikesHelpers.countArticleDisikesLikes({ where: { articleId,
likes: true } });
return res.status(200).json({ likes });
Expand All @@ -50,14 +50,6 @@ class LikesAndDislikes {
likes: true } });
return res.status(200).json({ likes });
}

if (disliked[0]) {
await LikesDislikesHelpers.ChangeLikeStatus({ dislikes: false, likes: true },
disliked[0].id);
const likes = await LikesDislikesHelpers.countArticleDisikesLikes({ where: { articleId,
likes: true } });
return res.status(200).json({ likes });
}
}

/**
Expand All @@ -72,16 +64,16 @@ class LikesAndDislikes {

if (!article) return res.status(404).json({ message: 'Article not found' });

const dislikedArticle = await LikesDislikesHelpers.findUnlikedArticle(id,
articleId, { likes: false }, { likes: null });
const undislikedArticle = await LikesDislikesHelpers.findUnlikedArticle(id,
articleId, { likes: true }, { dislikes: false });
const disliked = await LikesDislikesHelpers.findDisliked(id, articleId);
const liked = await LikesDislikesHelpers.findArticleLikes(id, articleId);
const userReacted = await LikesDislikesHelpers.userLikedOrDiskedArticle(id, articleId);

if (!userReacted[0]) {
await LikeAndDislike.create({ userId: id,
articleId: article.id,
dislikes: true });
dislikes: true,
likes: true });
const dislikes = await LikesDislikesHelpers.countArticleDisikesLikes(article.dataValues.id,
{ dislikes: true });
return res.status(200).json({ dislikes });
Expand All @@ -93,17 +85,10 @@ class LikesAndDislikes {
dislikes: true } });
return res.status(200).json({ dislikes });
}
if (dislikedArticle[0]) {
await LikesDislikesHelpers.ChangeLikeStatus({ dislikes: true, likes: false },
dislikedArticle[0].id);
const dislikes = await LikesDislikesHelpers.countArticleDisikesLikes({ where: { articleId,
dislikes: true } });
return res.status(200).json({ dislikes });
}

if (liked[0]) {
if (undislikedArticle[0]) {
await LikesDislikesHelpers.ChangeLikeStatus({ dislikes: true, likes: false },
liked[0].id);
undislikedArticle[0].id);
const dislikes = await LikesDislikesHelpers.countArticleDisikesLikes({ where: { articleId,
dislikes: true } });
return res.status(200).json({ dislikes });
Expand Down
59 changes: 21 additions & 38 deletions src/controllers/likeComment.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import model from '../models';
import findComment from './helpers/findComment';
import { countCommentDislikes,
countCommentLikes,
import { countArticleDisikesLikes,
undoLikeOrDislikeComments,
findCommentLikes,
ChangeFromLikeToDisLike,
ChangeFromDislikeToLike,
findDisliked,
findLikedComment,
findDislikedComment,
ChangeLikeOrDislikeStatus,
findLikedOrDislikedComment,
userLikedOrDiskedComment, } from './helpers/likeCommentHelper';

const { LikeAndDislike } = model;
Expand All @@ -30,29 +27,33 @@ class LikeComment {
if (!comment) return res.status(404).json({ message: 'Comment not found' });

const userReacted = await userLikedOrDiskedComment(id, commentId);
const dislikedComment = await findDislikedComment(id, commentId);
const dislikedComment = await findLikedOrDislikedComment(id, commentId,
{ likes: false }, { dislikes: true });
const liked = await findCommentLikes(id, commentId);

if (!userReacted[0]) {
await LikeAndDislike.create({ userId: id,
commentId: comment.id,
likes: true,
dislikes: false });
const likes = await countCommentLikes(comment.id);
const likes = await countArticleDisikesLikes({ where: { commentId,
likes: true } });

return res.status(200).json({ likes });
}

if (liked[0]) {
await undoLikeOrDislikeComments(liked[0].id);
const likes = await countCommentLikes(comment.id);
const likes = await countArticleDisikesLikes({ where: { commentId,
likes: true } });

return res.status(200).json({ likes });
}

if (dislikedComment[0]) {
await ChangeFromDislikeToLike(dislikedComment[0].id);
const likes = await countCommentLikes(comment.id);
await ChangeLikeOrDislikeStatus({ dislikes: false, likes: true }, dislikedComment[0].id);
const likes = await countArticleDisikesLikes({ where: { commentId,
likes: true } });

return res.status(200).json({ likes });
}
Expand All @@ -72,49 +73,31 @@ class LikeComment {
if (!comment) return res.status(404).json({ message: 'Comment not found' });

const userReacted = await userLikedOrDiskedComment(id, commentId);
const likedComment = await findLikedComment(id, commentId);
const likedComment = await findLikedOrDislikedComment(id, commentId,
{ dislikes: false }, { likes: true });
const dislikedComment = await findDisliked(id, commentId);

if (!userReacted[0]) {
await LikeAndDislike.create({ userId: id,
commentId: comment.id,
likes: false,
dislikes: true });
const dislikes = await countCommentDislikes(comment.id);
const dislikes = await countArticleDisikesLikes({ where: { commentId,
dislikes: true } });
return res.status(200).json({ dislikes });
}

if (likedComment[0]) {
await ChangeFromLikeToDisLike(likedComment[0].id);
const dislikes = await countCommentDislikes(comment.id);
await ChangeLikeOrDislikeStatus({ dislikes: true, likes: false }, likedComment[0].id);
const dislikes = await countArticleDisikesLikes({ where: { commentId,
dislikes: true } });
return res.status(200).json({ dislikes });
}

if (dislikedComment[0]) {
await undoLikeOrDislikeComments(dislikedComment[0].id);
const dislikes = await countCommentDislikes(comment.id);
return res.status(200).json({ dislikes });
}

if (dislikedComment[0]) {
await undoLikeOrDislikeComments(dislikedComment[0].id);
const dislikes = await countCommentDislikes(comment.id);
return res.status(200).json({ dislikes });
}

if (dislikedComment[0]) {
await undoLikeOrDislikeComments(dislikedComment[0].id);
const dislikes = await countCommentDislikes(comment.id);
return res.status(200).json({ dislikes });
}
if (dislikedComment[0]) {
await undoLikeOrDislikeComments(dislikedComment[0].id);
const dislikes = await countCommentDislikes(comment.id);
return res.status(200).json({ dislikes });
}
if (dislikedComment[0]) {
await undoLikeOrDislikeComments(dislikedComment[0].id);
const dislikes = await countCommentDislikes(comment.id);
const dislikes = await countArticleDisikesLikes({ where: { commentId,
dislikes: true } });
return res.status(200).json({ dislikes });
}
}
Expand Down
1 change: 0 additions & 1 deletion src/test/articlesTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ describe('Article', () => {
.post('/api/users')
.send(user)
.end((req, res) => {
console.log(res.body);
res.should.have.status(201);
res.body.should.be.an('object');
res.body.should.have.property('username');
Expand Down
1 change: 0 additions & 1 deletion src/test/bookmarksTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ describe('Article', () => {
.post('/api/users')
.send(user)
.end((req, res) => {
console.log(res.body);
res.should.have.status(201);
res.body.should.be.an('object');
res.body.should.have.property('username');
Expand Down

0 comments on commit 52cea4c

Please sign in to comment.