Merge branch 'hongpo/update-question-filter' of https://github.com/yangshun/tech-interview-handbook into hongpo/update-question-filter

pull/409/head
hpkoh 3 years ago
commit 3c2bfcfc3a

@ -26,7 +26,7 @@ import {
} from '~/utils/questions/useSearchFilter'; } from '~/utils/questions/useSearchFilter';
import { trpc } from '~/utils/trpc'; import { trpc } from '~/utils/trpc';
import { SortOrder, SortType } from '~/types/questions'; import { SortOrder, SortType } from '~/types/questions.d';
export default function QuestionsHomePage() { export default function QuestionsHomePage() {
const router = useRouter(); const router = useRouter();
@ -74,7 +74,7 @@ export default function QuestionsHomePage() {
roles: [], roles: [],
// TODO: Implement sort order and sort type choices // TODO: Implement sort order and sort type choices
sortOrder: SortOrder.DESC, sortOrder: SortOrder.DESC,
sortType: SortType.BEST, sortType: SortType.NEW,
startDate, startDate,
}, },
], ],

@ -5,11 +5,10 @@ import { TRPCError } from '@trpc/server';
import { createProtectedRouter } from './context'; import { createProtectedRouter } from './context';
import type { Question } from '~/types/questions'; import type { Question } from '~/types/questions';
import { SortOrder, SortType } from '~/types/questions'; import { SortOrder, SortType } from '~/types/questions.d';
const TWO_WEEK_IN_MS = 12096e5; const TWO_WEEK_IN_MS = 12096e5;
export const questionsQuestionRouter = createProtectedRouter() export const questionsQuestionRouter = createProtectedRouter()
.query('getQuestionsByFilter', { .query('getQuestionsByFilter', {
input: z.object({ input: z.object({
@ -24,20 +23,14 @@ export const questionsQuestionRouter = createProtectedRouter()
startDate: z.date().default(new Date(Date.now() - TWO_WEEK_IN_MS)), startDate: z.date().default(new Date(Date.now() - TWO_WEEK_IN_MS)),
}), }),
async resolve({ ctx, input }) { async resolve({ ctx, input }) {
let sortCondition; const sortCondition =
input.sortType === SortType.TOP
switch(input.sortType) { ? {
case SortType.TOP:
sortCondition = {
upvotes: input.sortOrder, upvotes: input.sortOrder,
} }
break; : {
case SortType.NEW:
sortCondition = {
lastSeenAt: input.sortOrder, lastSeenAt: input.sortOrder,
} };
break;
}
const questionsData = await ctx.prisma.questionsQuestion.findMany({ const questionsData = await ctx.prisma.questionsQuestion.findMany({
include: { include: {
@ -343,7 +336,7 @@ export const questionsQuestionRouter = createProtectedRouter()
const incrementValue = vote === Vote.UPVOTE ? 1 : -1; const incrementValue = vote === Vote.UPVOTE ? 1 : -1;
const [questionVote, question] = await ctx.prisma.$transaction([ const [questionVote] = await ctx.prisma.$transaction([
ctx.prisma.questionsQuestionVote.create({ ctx.prisma.questionsQuestionVote.create({
data: { data: {
questionId, questionId,
@ -353,14 +346,14 @@ export const questionsQuestionRouter = createProtectedRouter()
}), }),
ctx.prisma.questionsQuestion.update({ ctx.prisma.questionsQuestion.update({
data: { data: {
upvotes : { upvotes: {
increment: incrementValue, increment: incrementValue,
}, },
}, },
where: { where: {
id: questionId, id: questionId,
}, },
}) }),
]); ]);
return questionVote; return questionVote;
}, },
@ -389,7 +382,7 @@ export const questionsQuestionRouter = createProtectedRouter()
const incrementValue = vote === Vote.UPVOTE ? 2 : -2; const incrementValue = vote === Vote.UPVOTE ? 2 : -2;
const [questionVote, question] = await ctx.prisma.$transaction([ const [questionVote] = await ctx.prisma.$transaction([
ctx.prisma.questionsQuestionVote.update({ ctx.prisma.questionsQuestionVote.update({
data: { data: {
vote, vote,
@ -400,14 +393,14 @@ export const questionsQuestionRouter = createProtectedRouter()
}), }),
ctx.prisma.questionsQuestion.update({ ctx.prisma.questionsQuestion.update({
data: { data: {
upvotes : { upvotes: {
increment: incrementValue, increment: incrementValue,
}, },
}, },
where: { where: {
id: voteToUpdate.questionId, id: voteToUpdate.questionId,
}, },
}) }),
]); ]);
return questionVote; return questionVote;
@ -435,7 +428,7 @@ export const questionsQuestionRouter = createProtectedRouter()
const incrementValue = voteToDelete.vote === Vote.UPVOTE ? -1 : 1; const incrementValue = voteToDelete.vote === Vote.UPVOTE ? -1 : 1;
const [questionVote, question] = await ctx.prisma.$transaction([ const [questionVote] = await ctx.prisma.$transaction([
ctx.prisma.questionsQuestionVote.delete({ ctx.prisma.questionsQuestionVote.delete({
where: { where: {
id: input.id, id: input.id,
@ -443,14 +436,14 @@ export const questionsQuestionRouter = createProtectedRouter()
}), }),
ctx.prisma.questionsQuestion.update({ ctx.prisma.questionsQuestion.update({
data: { data: {
upvotes : { upvotes: {
increment: incrementValue, increment: incrementValue,
}, },
}, },
where: { where: {
id: voteToDelete.questionId, id: voteToDelete.questionId,
}, },
}) }),
]); ]);
return questionVote; return questionVote;
}, },

@ -20,7 +20,7 @@ export type AggregatedQuestionEncounter = {
companyCounts: Record<string, number>; companyCounts: Record<string, number>;
locationCounts: Record<string, number>; locationCounts: Record<string, number>;
roleCounts: Record<string, number>; roleCounts: Record<string, number>;
} };
export type AnswerComment = { export type AnswerComment = {
content: string; content: string;
@ -54,9 +54,9 @@ export type QuestionComment = {
export enum SortOrder { export enum SortOrder {
ASC = 'asc', ASC = 'asc',
DESC = 'desc', DESC = 'desc',
}; }
export enum SortType { export enum SortType {
TOP, TOP,
NEW, NEW,
}; }

Loading…
Cancel
Save