fix bug name quizzes
This commit is contained in:
parent
2069dbd0de
commit
9d0c25ea3c
@ -13,15 +13,23 @@ export default async function QuizzesPage() {
|
||||
const { data: { user }, error: authError } = await supabase.auth.getUser()
|
||||
if (authError || !user) redirect('/login')
|
||||
|
||||
// Requêtes parallèles — les quizzes sont récupérés séparément avec un filtre
|
||||
// explicite sur author_id pour éviter de dépendre de la RLS dans les nested selects
|
||||
const [
|
||||
{ data: categories },
|
||||
{ data: allQuizzes },
|
||||
{ count: totalQuizzes },
|
||||
{ data: sessionIds },
|
||||
] = await Promise.all([
|
||||
db
|
||||
.from('categories')
|
||||
.select('id, name, description, subchapters(id, name, quizzes(id, title, updated_at))')
|
||||
.select('id, name, description, subchapters(id, name)')
|
||||
.order('name'),
|
||||
db
|
||||
.from('quizzes')
|
||||
.select('id, title, updated_at, subchapter_id')
|
||||
.eq('author_id', user.id)
|
||||
.not('subchapter_id', 'is', null),
|
||||
db
|
||||
.from('quizzes')
|
||||
.select('id', { count: 'exact', head: true })
|
||||
@ -32,6 +40,12 @@ export default async function QuizzesPage() {
|
||||
.eq('trainer_id', user.id),
|
||||
])
|
||||
|
||||
// Index quizzes par subchapter_id pour le merge
|
||||
const quizBySubchapter = new Map<string, any>()
|
||||
for (const q of allQuizzes ?? []) {
|
||||
quizBySubchapter.set(q.subchapter_id, q)
|
||||
}
|
||||
|
||||
const ids = (sessionIds ?? []).map((s: any) => s.id)
|
||||
const { count: totalStudents } = ids.length > 0
|
||||
? await db
|
||||
@ -40,14 +54,12 @@ export default async function QuizzesPage() {
|
||||
.in('session_id', ids)
|
||||
: { count: 0 }
|
||||
|
||||
// Supabase retourne `quizzes: null` (pas `[]`) quand un sous-chapitre n'a
|
||||
// aucun quiz — on normalise pour éviter les crash .length côté client.
|
||||
const normalizedCategories = (categories ?? []).map((cat: any) => ({
|
||||
...cat,
|
||||
subchapters: (cat.subchapters ?? []).map((sub: any) => ({
|
||||
...sub,
|
||||
quizzes: Array.isArray(sub.quizzes) ? sub.quizzes : [],
|
||||
})),
|
||||
subchapters: (cat.subchapters ?? []).map((sub: any) => {
|
||||
const quiz = quizBySubchapter.get(sub.id)
|
||||
return { ...sub, quizzes: quiz ? [quiz] : [] }
|
||||
}),
|
||||
}))
|
||||
|
||||
return (
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user