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 };