mirror of
https://github.com/yangshun/tech-interview-handbook.git
synced 2025-07-28 12:43:12 +08:00
[questions][chore] update to use company table values (#351)
Co-authored-by: Jeff Sieu <jeffsy00@gmail.com>
This commit is contained in:
@ -9,7 +9,7 @@ import type { Question } from '~/types/questions';
|
||||
export const questionsQuestionRouter = createProtectedRouter()
|
||||
.query('getQuestionsByFilter', {
|
||||
input: z.object({
|
||||
companies: z.string().array(),
|
||||
companyNames: z.string().array(),
|
||||
endDate: z.date(),
|
||||
locations: z.string().array(),
|
||||
questionTypes: z.nativeEnum(QuestionsQuestionType).array(),
|
||||
@ -51,68 +51,69 @@ export const questionsQuestionRouter = createProtectedRouter()
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
encounters : {
|
||||
encounters: {
|
||||
some: {
|
||||
...(input.companies.length > 0
|
||||
...(input.companyNames.length > 0
|
||||
? {
|
||||
company : {
|
||||
in : input.companies
|
||||
}
|
||||
}
|
||||
company: {
|
||||
name: {
|
||||
in: input.companyNames,
|
||||
},
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
...(input.locations.length > 0
|
||||
? {
|
||||
location: {
|
||||
in: input.locations
|
||||
in: input.locations,
|
||||
},
|
||||
}
|
||||
}
|
||||
: {}),
|
||||
...(input.roles.length > 0
|
||||
? {
|
||||
role : {
|
||||
in: input.roles
|
||||
}
|
||||
}
|
||||
role: {
|
||||
in: input.roles,
|
||||
},
|
||||
}
|
||||
: {}),
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
return questionsData
|
||||
.map((data) => {
|
||||
const votes: number = data.votes.reduce(
|
||||
(previousValue: number, currentValue) => {
|
||||
let result: number = previousValue;
|
||||
return questionsData.map((data) => {
|
||||
const votes: number = data.votes.reduce(
|
||||
(previousValue: number, currentValue) => {
|
||||
let result: number = previousValue;
|
||||
|
||||
switch (currentValue.vote) {
|
||||
case Vote.UPVOTE:
|
||||
result += 1;
|
||||
break;
|
||||
case Vote.DOWNVOTE:
|
||||
result -= 1;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
},
|
||||
0,
|
||||
);
|
||||
switch (currentValue.vote) {
|
||||
case Vote.UPVOTE:
|
||||
result += 1;
|
||||
break;
|
||||
case Vote.DOWNVOTE:
|
||||
result -= 1;
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
},
|
||||
0,
|
||||
);
|
||||
|
||||
const question: Question = {
|
||||
company: data.encounters[0].company,
|
||||
content: data.content,
|
||||
id: data.id,
|
||||
location: data.encounters[0].location ?? 'Unknown location',
|
||||
numAnswers: data._count.answers,
|
||||
numComments: data._count.comments,
|
||||
numVotes: votes,
|
||||
role: data.encounters[0].role ?? 'Unknown role',
|
||||
seenAt: data.encounters[0].seenAt,
|
||||
type: data.questionType,
|
||||
updatedAt: data.updatedAt,
|
||||
user: data.user?.name ?? '',
|
||||
};
|
||||
return question;
|
||||
});
|
||||
const question: Question = {
|
||||
company: data.encounters[0].company!.name ?? 'Unknown company',
|
||||
content: data.content,
|
||||
id: data.id,
|
||||
location: data.encounters[0].location ?? 'Unknown location',
|
||||
numAnswers: data._count.answers,
|
||||
numComments: data._count.comments,
|
||||
numVotes: votes,
|
||||
role: data.encounters[0].role ?? 'Unknown role',
|
||||
seenAt: data.encounters[0].seenAt,
|
||||
type: data.questionType,
|
||||
updatedAt: data.updatedAt,
|
||||
user: data.user?.name ?? '',
|
||||
};
|
||||
return question;
|
||||
});
|
||||
},
|
||||
})
|
||||
.query('getQuestionById', {
|
||||
@ -171,7 +172,7 @@ export const questionsQuestionRouter = createProtectedRouter()
|
||||
);
|
||||
|
||||
const question: Question = {
|
||||
company: questionData.encounters[0].company,
|
||||
company: questionData.encounters[0].company!.name ?? 'Unknown company',
|
||||
content: questionData.content,
|
||||
id: questionData.id,
|
||||
location: questionData.encounters[0].location ?? 'Unknown location',
|
||||
@ -189,7 +190,7 @@ export const questionsQuestionRouter = createProtectedRouter()
|
||||
})
|
||||
.mutation('create', {
|
||||
input: z.object({
|
||||
company: z.string(),
|
||||
companyId: z.string(),
|
||||
content: z.string(),
|
||||
location: z.string(),
|
||||
questionType: z.nativeEnum(QuestionsQuestionType),
|
||||
@ -199,17 +200,25 @@ export const questionsQuestionRouter = createProtectedRouter()
|
||||
async resolve({ ctx, input }) {
|
||||
const userId = ctx.session?.user?.id;
|
||||
|
||||
const question = await ctx.prisma.questionsQuestion.create({
|
||||
return await ctx.prisma.questionsQuestion.create({
|
||||
data: {
|
||||
content: input.content,
|
||||
encounters: {
|
||||
create: [
|
||||
{
|
||||
company: input.company,
|
||||
company: {
|
||||
connect: {
|
||||
id: input.companyId,
|
||||
},
|
||||
},
|
||||
location: input.location,
|
||||
role: input.role,
|
||||
seenAt: input.seenAt,
|
||||
userId,
|
||||
user: {
|
||||
connect: {
|
||||
id: userId,
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
@ -217,20 +226,6 @@ export const questionsQuestionRouter = createProtectedRouter()
|
||||
userId,
|
||||
},
|
||||
});
|
||||
|
||||
// Create question encounter
|
||||
await ctx.prisma.questionsQuestionEncounter.create({
|
||||
data: {
|
||||
company: input.company,
|
||||
location: input.location,
|
||||
questionId: question.id,
|
||||
role: input.role,
|
||||
seenAt: input.seenAt,
|
||||
userId,
|
||||
},
|
||||
});
|
||||
|
||||
return question;
|
||||
},
|
||||
})
|
||||
.mutation('update', {
|
||||
@ -259,7 +254,6 @@ export const questionsQuestionRouter = createProtectedRouter()
|
||||
const { content, questionType } = input;
|
||||
|
||||
return await ctx.prisma.questionsQuestion.update({
|
||||
|
||||
data: {
|
||||
content,
|
||||
questionType,
|
||||
|
Reference in New Issue
Block a user