[questions][chore] update to use company table values (#351)

Co-authored-by: Jeff Sieu <jeffsy00@gmail.com>
This commit is contained in:
hpkoh
2022-10-19 18:08:51 +08:00
committed by GitHub
parent 410bf290c9
commit 2f12a900e6
6 changed files with 106 additions and 95 deletions

View File

@ -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,