|
|
@ -9,7 +9,6 @@ import { SortOrder, SortType } from '~/types/questions';
|
|
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
},
|
|
|
|
},
|
|
|
|