From 74d59f406dd74754af401fc1f8d3b9aa0b2b4a21 Mon Sep 17 00:00:00 2001 From: hpkoh Date: Sat, 22 Oct 2022 21:38:49 +0800 Subject: [PATCH] [questions][feat] add next cursors --- .../server/router/questions-question-router.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/apps/portal/src/server/router/questions-question-router.ts b/apps/portal/src/server/router/questions-question-router.ts index a5449d0c..41d52e1f 100644 --- a/apps/portal/src/server/router/questions-question-router.ts +++ b/apps/portal/src/server/router/questions-question-router.ts @@ -1,4 +1,4 @@ -import { z } from 'zod'; +import { undefined, z } from 'zod'; import { QuestionsQuestionType, Vote } from '@prisma/client'; import { TRPCError } from '@trpc/server'; @@ -128,7 +128,12 @@ export const questionsQuestionRouter = createProtectedRouter() }, }, }); - return questionsData.map((data) => { + const lastQuestion = questionsData[input.pageSize - 1]; + const nextIdCursor = lastQuestion.id; + const nextLastSeenCursor = input.sortType === SortType.NEW ? lastQuestion.lastSeenAt : undefined; + const nextupvoteCursor = input.sortType === SortType.TOP ? lastQuestion.upvote : undefined; + + const processedQuestionsData = questionsData.map((data) => { const votes: number = data.votes.reduce( (previousValue: number, currentValue) => { let result: number = previousValue; @@ -193,6 +198,13 @@ export const questionsQuestionRouter = createProtectedRouter() }; return question; }); + + return { + nextIdCursor, + nextLastSeenCursor, + nextupvoteCursor, + processedQuestionsData, + } }, }) .query('getQuestionById', {