-
+
-
- {Array.from({ length: question.numAnswers }).map((_, index) => (
+ {(answers ?? []).map((answer) => (
))}
diff --git a/apps/portal/src/server/router/questions-answer-router.ts b/apps/portal/src/server/router/questions-answer-router.ts
index 61a5b6c5..21095bf7 100644
--- a/apps/portal/src/server/router/questions-answer-router.ts
+++ b/apps/portal/src/server/router/questions-answer-router.ts
@@ -14,17 +14,17 @@ export const questionsAnswerRouter = createProtectedRouter()
async resolve({ ctx, input }) {
const answersData = await ctx.prisma.questionsAnswer.findMany({
include: {
- _count: {
- select: {
- comments: true,
+ _count: {
+ select: {
+ comments: true,
+ },
},
- },
- user: {
- select: {
- name: true,
+ user: {
+ select: {
+ name: true,
+ },
},
- },
- votes: true,
+ votes: true,
},
orderBy: {
createdAt: 'desc',
@@ -32,43 +32,93 @@ export const questionsAnswerRouter = createProtectedRouter()
where: {
...input,
},
- });
- return answersData.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
- );
+ });
+ return answersData.map((data) => {
+ const votes: number = data.votes.reduce(
+ (previousValue: number, currentValue) => {
+ let result: number = previousValue;
- let userName = "";
+ switch (currentValue.vote) {
+ case Vote.UPVOTE:
+ result += 1;
+ break;
+ case Vote.DOWNVOTE:
+ result -= 1;
+ break;
+ }
+ return result;
+ },
+ 0,
+ );
- if (data.user) {
- userName = data.user.name!;
+ const answer: Answer = {
+ content: data.content,
+ createdAt: data.createdAt,
+ id: data.id,
+ numComments: data._count.comments,
+ numVotes: votes,
+ user: data.user?.name ?? '',
+ };
+ return answer;
+ });
+ },
+ })
+ .query('getAnswerById', {
+ input: z.object({
+ answerId: z.string(),
+ }),
+ async resolve({ ctx, input }) {
+ const answerData = await ctx.prisma.questionsAnswer.findUnique({
+ include: {
+ _count: {
+ select: {
+ comments: true,
+ },
+ },
+ user: {
+ select: {
+ name: true,
+ },
+ },
+ votes: true,
+ },
+ where: {
+ id: input.answerId,
+ },
+ });
+ if (!answerData) {
+ throw new TRPCError({
+ code: 'NOT_FOUND',
+ message: 'Answer not found',
+ });
}
+ const votes: number = answerData.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,
+ );
const answer: Answer = {
- content: data.content,
- createdAt: data.createdAt,
- id: data.id,
- numComments: data._count.comments,
+ content: answerData.content,
+ createdAt: answerData.createdAt,
+ id: answerData.id,
+ numComments: answerData._count.comments,
numVotes: votes,
- user: userName,
+ user: answerData.user?.name ?? '',
};
return answer;
- });
- }
+ },
})
.mutation('create', {
input: z.object({
@@ -93,7 +143,7 @@ export const questionsAnswerRouter = createProtectedRouter()
}),
async resolve({ ctx, input }) {
const userId = ctx.session?.user?.id;
- const {content, id} = input
+ const { content, id } = input;
const answerToUpdate = await ctx.prisma.questionsAnswer.findUnique({
where: {
@@ -128,7 +178,8 @@ export const questionsAnswerRouter = createProtectedRouter()
const answerToDelete = await ctx.prisma.questionsAnswer.findUnique({
where: {
id: input.id,
- },});
+ },
+ });
if (answerToDelete?.id !== userId) {
throw new TRPCError({
@@ -150,11 +201,11 @@ export const questionsAnswerRouter = createProtectedRouter()
}),
async resolve({ ctx, input }) {
const userId = ctx.session?.user?.id;
- const {answerId} = input
+ const { answerId } = input;
return await ctx.prisma.questionsAnswerVote.findUnique({
where: {
- answerId_userId : { answerId, userId },
+ answerId_userId: { answerId, userId },
},
});
},
@@ -182,7 +233,7 @@ export const questionsAnswerRouter = createProtectedRouter()
}),
async resolve({ ctx, input }) {
const userId = ctx.session?.user?.id;
- const {id, vote} = input
+ const { id, vote } = input;
const voteToUpdate = await ctx.prisma.questionsAnswerVote.findUnique({
where: {
@@ -217,7 +268,8 @@ export const questionsAnswerRouter = createProtectedRouter()
const voteToDelete = await ctx.prisma.questionsAnswerVote.findUnique({
where: {
id: input.id,
- },});
+ },
+ });
if (voteToDelete?.id !== userId) {
throw new TRPCError({
@@ -232,4 +284,4 @@ export const questionsAnswerRouter = createProtectedRouter()
},
});
},
- });
\ No newline at end of file
+ });
diff --git a/apps/portal/src/server/router/questions-question-comment-router.ts b/apps/portal/src/server/router/questions-question-comment-router.ts
index f41f161d..82345f06 100644
--- a/apps/portal/src/server/router/questions-question-comment-router.ts
+++ b/apps/portal/src/server/router/questions-question-comment-router.ts
@@ -47,18 +47,12 @@ export const questionsQuestionCommentRouter = createProtectedRouter()
0,
);
- let userName = '';
-
- if (data.user) {
- userName = data.user.name!;
- }
-
const questionComment: QuestionComment = {
content: data.content,
createdAt: data.createdAt,
id: data.id,
numVotes: votes,
- user: userName,
+ user: data.user?.name ?? '',
};
return questionComment;
});
diff --git a/apps/portal/src/server/router/questions-question-router.ts b/apps/portal/src/server/router/questions-question-router.ts
index c4659b47..55bf5981 100644
--- a/apps/portal/src/server/router/questions-question-router.ts
+++ b/apps/portal/src/server/router/questions-question-router.ts
@@ -78,12 +78,6 @@ export const questionsQuestionRouter = createProtectedRouter()
0,
);
- let userName = '';
-
- if (data.user) {
- userName = data.user.name!;
- }
-
const question: Question = {
company: data.encounters[0].company,
content: data.content,
@@ -95,7 +89,7 @@ export const questionsQuestionRouter = createProtectedRouter()
role: data.encounters[0].role ?? 'Unknown role',
seenAt: data.encounters[0].seenAt,
updatedAt: data.updatedAt,
- user: userName,
+ user: data.user?.name ?? '',
};
return question;
});
@@ -156,12 +150,6 @@ export const questionsQuestionRouter = createProtectedRouter()
0,
);
- let userName = '';
-
- if (questionData.user) {
- userName = questionData.user.name!;
- }
-
const question: Question = {
company: questionData.encounters[0].company,
content: questionData.content,
@@ -173,7 +161,7 @@ export const questionsQuestionRouter = createProtectedRouter()
role: questionData.encounters[0].role ?? 'Unknown role',
seenAt: questionData.encounters[0].seenAt,
updatedAt: questionData.updatedAt,
- user: userName,
+ user: questionData.user?.name ?? '',
};
return question;
},
diff --git a/apps/portal/src/types/questions.d.ts b/apps/portal/src/types/questions.d.ts
index 1d189a11..75d02666 100644
--- a/apps/portal/src/types/questions.d.ts
+++ b/apps/portal/src/types/questions.d.ts
@@ -25,6 +25,7 @@ export type Answer = {
id: string;
numComments: number;
numVotes: number;
+ user: string;
};
export type QuestionComment = {