function getPostInclude(loggedInUserId: string | undefined) {
return Prisma.validator<Prisma.PostInclude>()({
user: {
select: getUserProfileSelect(loggedInUserId),
},
reposts: {
where: {
userId: loggedInUserId,
},
select: {
userId: true,
},
},
likes: {
where: {
userId: loggedInUserId,
},
select: {
userId: true,
},
},
bookmarks: {
where: {
userId: loggedInUserId,
},
select: {
userId: true,
},
},
attachments: true,
_count: {
select: {
likes: true,
replies: true,
reposts: true,
views: true,
},
},
});
}
function getPostWithQuoteInclude(loggedInUserId: string | undefined) {
return Prisma.validator<Prisma.PostInclude>()({
...getPostInclude(loggedInUserId),
quoteOfPost: { include: getPostInclude(loggedInUserId) },
});
}
export function getPostWithRepostInclude(loggedInUserId: string | undefined) {
return Prisma.validator<Prisma.PostInclude>()({
...getPostWithQuoteInclude(loggedInUserId),
repostOfPost: { include: getPostWithQuoteInclude(loggedInUserId) },
});
}
export function getPostWithReplyToInclude(loggedInUserId: string | undefined) {
return Prisma.validator<Prisma.PostInclude>()({
...getPostWithRepostInclude(loggedInUserId),
replyToPost: { include: getPostWithRepostInclude(loggedInUserId) },
});
}