export const mostUpvoted = await db
.select({
id: feedback.id,
feedbackNo: feedback.feedbackNo,
userId: feedback.userId,
title: feedback.title,
body: feedback.body,
type: feedback.type,
status: feedback.status,
isPinned: feedback.isPinned,
createdAt: feedback.createdAt,
updatedAt: feedback.updatedAt,
totalVotes: sql<number>`sum(CASE WHEN ${votes.voteType} = 'UP' THEN 1 WHEN ${votes.voteType} = 'DOWN' THEN -1 ELSE 0 END)`,
votes: votes,
author: users,
})
.from(feedback)
.leftJoin(users, eq(feedback.userId, users.id))
.leftJoin(votes, eq(votes.feedbackId, feedback.id))
.groupBy(feedback.id, votes.id, users.id)
.orderBy(asc(feedback.id))
.prepare("most_upvoted");
export const mostUpvoted = await db
.select({
id: feedback.id,
feedbackNo: feedback.feedbackNo,
userId: feedback.userId,
title: feedback.title,
body: feedback.body,
type: feedback.type,
status: feedback.status,
isPinned: feedback.isPinned,
createdAt: feedback.createdAt,
updatedAt: feedback.updatedAt,
totalVotes: sql<number>`sum(CASE WHEN ${votes.voteType} = 'UP' THEN 1 WHEN ${votes.voteType} = 'DOWN' THEN -1 ELSE 0 END)`,
votes: votes,
author: users,
})
.from(feedback)
.leftJoin(users, eq(feedback.userId, users.id))
.leftJoin(votes, eq(votes.feedbackId, feedback.id))
.groupBy(feedback.id, votes.id, users.id)
.orderBy(asc(feedback.id))
.prepare("most_upvoted");