Files
adastra_api/src/utils/helpers.js
T

50 lines
2.0 KiB
JavaScript

const appendTagList = (articleTags, article) => {
const tagList = articleTags.map((tag) => tag.tagName);
if (!article) return tagList;
delete article.dataValues.tagLists; //articleTags
article.dataValues.tagList = tagList;
};
const appendFavorites = async (loggedUser, article) => {
console.log("article: ", article);
//const favorited = await article.hasUser(loggedUser ? loggedUser : null);
const favorited = await article.hasArticleFavoriteUsers(loggedUser ? loggedUser : null);
article.dataValues.favorited = loggedUser ? favorited : false;
//const favoritesCount = await article.countUsers();
const favoritesCount = await article.countFavorites();
article.dataValues.favoritesCount = favoritesCount;
};
const appendFollowers = async (loggedUser, toAppend) => {
// If toAppend has an author (it's an Article)
if (toAppend?.author) {
await appendArticleFollowers(loggedUser, toAppend);
} else if (toAppend?.id && toAppend?.hasUserIdUserFollower) {
// toAppend is a User model
await appendUserFollowers(loggedUser, toAppend);
}
};
const appendArticleFollowers = async (loggedUser, article) => {
// Append follower info to an article's author
const author = await article.getAuthor();
const following = loggedUser ? await author.hasUserIdUserFollower(loggedUser) : false;
article.author.dataValues.following = following;
const followersCount = await author.countFollowers();
article.author.dataValues.followersCount = followersCount;
};
const appendUserFollowers = async (loggedUser, user) => {
// Append follower info to a user
const following = loggedUser ? await user.hasUserIdUserFollower(loggedUser) : false;
user.dataValues.following = following;
const followersCount = await user.countFollowers();
user.dataValues.followersCount = followersCount;
};
module.exports = { appendTagList, appendFavorites, appendFollowers, appendArticleFollowers, appendUserFollowers };