mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-11 03:24:16 +00:00
implement fullfillPostsData
This commit is contained in:
parent
426eb7b47e
commit
53876ced69
60
packages/server/src/utils/fullfillPostsData/index.js
Normal file
60
packages/server/src/utils/fullfillPostsData/index.js
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
import { User, Comment, SavedPost } from "../../models"
|
||||||
|
|
||||||
|
export default async (payload) => {
|
||||||
|
let {
|
||||||
|
posts,
|
||||||
|
for_user_id,
|
||||||
|
skip = 0,
|
||||||
|
} = payload
|
||||||
|
|
||||||
|
if (!Array.isArray(posts)) {
|
||||||
|
posts = [posts]
|
||||||
|
}
|
||||||
|
|
||||||
|
let savedPostsIds = []
|
||||||
|
|
||||||
|
if (for_user_id) {
|
||||||
|
const savedPosts = await SavedPost.find({ user_id: for_user_id })
|
||||||
|
.sort({ saved_at: -1 })
|
||||||
|
|
||||||
|
savedPostsIds = savedPosts.map((savedPost) => savedPost.post_id)
|
||||||
|
}
|
||||||
|
|
||||||
|
posts = posts.map(async (post, index) => {
|
||||||
|
post = post.toObject()
|
||||||
|
|
||||||
|
let user = await User.findById(post.user_id).catch(() => false)
|
||||||
|
|
||||||
|
if (!user) {
|
||||||
|
user = {
|
||||||
|
username: "Deleted user",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let comments = await Comment.find({ parent_id: post._id.toString() })
|
||||||
|
.select("_id")
|
||||||
|
.catch(() => false)
|
||||||
|
|
||||||
|
if (!comments) {
|
||||||
|
comments = []
|
||||||
|
}
|
||||||
|
|
||||||
|
post.comments = comments
|
||||||
|
|
||||||
|
if (for_user_id) {
|
||||||
|
post.isLiked = post.likes.includes(for_user_id)
|
||||||
|
post.isSaved = savedPostsIds.includes(post._id.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
key: Number(skip) + Number(index),
|
||||||
|
...post,
|
||||||
|
comments: comments.map((comment) => comment._id.toString()),
|
||||||
|
user,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
posts = await Promise.all(posts)
|
||||||
|
|
||||||
|
return posts
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user