From ba0a630fd9fcc94436eead0f95e113c78f546724 Mon Sep 17 00:00:00 2001 From: dmitriylaukhin Date: Mon, 27 Apr 2026 12:07:28 +0500 Subject: [PATCH] Fix quiz attempts page: fetch users separately (no User relation on QuizAttempt) Co-Authored-By: Claude Sonnet 4.6 --- src/app/admin/quizzes/[quizId]/page.tsx | 26 ++++++++++++------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/app/admin/quizzes/[quizId]/page.tsx b/src/app/admin/quizzes/[quizId]/page.tsx index 38dd934..6dd4b70 100644 --- a/src/app/admin/quizzes/[quizId]/page.tsx +++ b/src/app/admin/quizzes/[quizId]/page.tsx @@ -13,20 +13,13 @@ export default async function AdminQuizAttemptsPage({ params }: Props) { where: { id: quizId }, include: { questions: { orderBy: { order: "asc" } }, - attempts: { - orderBy: { completedAt: "desc" }, - include: { - user: { select: { name: true, email: true } }, - }, - }, + attempts: { orderBy: { completedAt: "desc" } }, lesson: { select: { - id: true, title: true, module: { select: { - id: true, - course: { select: { id: true, title: true } }, + course: { select: { title: true } }, }, }, }, @@ -36,8 +29,12 @@ export default async function AdminQuizAttemptsPage({ params }: Props) { if (!quiz) notFound(); - const courseId = quiz.lesson.module.course.id; - const moduleId = quiz.lesson.module.id; + const userIds = [...new Set(quiz.attempts.map((a) => a.userId))]; + const users = await prisma.user.findMany({ + where: { id: { in: userIds } }, + select: { id: true, name: true, email: true }, + }); + const userMap = Object.fromEntries(users.map((u) => [u.id, u])); return (
@@ -67,6 +64,7 @@ export default async function AdminQuizAttemptsPage({ params }: Props) {
{quiz.attempts.map((attempt) => { const answers = attempt.answers as Record; + const user = userMap[attempt.userId]; const date = new Date(attempt.completedAt).toLocaleString("ru-RU", { day: "2-digit", month: "2-digit", @@ -83,9 +81,9 @@ export default async function AdminQuizAttemptsPage({ params }: Props) { >
-

{attempt.user.name}

+

{user?.name ?? "—"}

- {attempt.user.email} + {user?.email ?? attempt.userId}

@@ -93,7 +91,7 @@ export default async function AdminQuizAttemptsPage({ params }: Props) {
-
+
{quiz.questions.map((q, idx) => (