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

@ -5,11 +5,10 @@ import { TRPCError } from '@trpc/server';
import { createProtectedRouter } from './context';
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;
export const questionsQuestionRouter = createProtectedRouter()
.query('getQuestionsByFilter', {
input: z.object({
@ -24,20 +23,14 @@ export const questionsQuestionRouter = createProtectedRouter()
startDate: z.date().default(new Date(Date.now() - TWO_WEEK_IN_MS)),
}),
async resolve({ ctx, input }) {
let sortCondition;
switch(input.sortType) {
case SortType.TOP:
sortCondition = {
upvotes: input.sortOrder,
}
break;
case SortType.NEW:
sortCondition = {
lastSeenAt: input.sortOrder,
}
break;
}
const sortCondition =
input.sortType === SortType.TOP
? {
upvotes: input.sortOrder,
}
: {
lastSeenAt: input.sortOrder,
};
const questionsData = await ctx.prisma.questionsQuestion.findMany({
include: {
@ -76,8 +69,8 @@ export const questionsQuestionRouter = createProtectedRouter()
encounters: {
some: {
seenAt: {
gte: input.startDate,
lte: input.endDate,
gte: input.startDate,
lte: input.endDate,
},
...(input.companyNames.length > 0
? {
@ -343,7 +336,7 @@ export const questionsQuestionRouter = createProtectedRouter()
const incrementValue = vote === Vote.UPVOTE ? 1 : -1;
const [questionVote, question] = await ctx.prisma.$transaction([
const [questionVote] = await ctx.prisma.$transaction([
ctx.prisma.questionsQuestionVote.create({
data: {
questionId,
@ -353,14 +346,14 @@ export const questionsQuestionRouter = createProtectedRouter()
}),
ctx.prisma.questionsQuestion.update({
data: {
upvotes : {
upvotes: {
increment: incrementValue,
},
},
where: {
id: questionId,
},
})
}),
]);
return questionVote;
},
@ -389,7 +382,7 @@ export const questionsQuestionRouter = createProtectedRouter()
const incrementValue = vote === Vote.UPVOTE ? 2 : -2;
const [questionVote, question] = await ctx.prisma.$transaction([
const [questionVote] = await ctx.prisma.$transaction([
ctx.prisma.questionsQuestionVote.update({
data: {
vote,
@ -400,14 +393,14 @@ export const questionsQuestionRouter = createProtectedRouter()
}),
ctx.prisma.questionsQuestion.update({
data: {
upvotes : {
upvotes: {
increment: incrementValue,
},
},
where: {
id: voteToUpdate.questionId,
},
})
}),
]);
return questionVote;
@ -435,7 +428,7 @@ export const questionsQuestionRouter = createProtectedRouter()
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({
where: {
id: input.id,
@ -443,14 +436,14 @@ export const questionsQuestionRouter = createProtectedRouter()
}),
ctx.prisma.questionsQuestion.update({
data: {
upvotes : {
upvotes: {
increment: incrementValue,
},
},
where: {
id: voteToDelete.questionId,
},
})
}),
]);
return questionVote;
},

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

Loading…
Cancel
Save