refactor: improve quiz retrieval logic in Quiz schema

- Enhanced the quiz retrieval logic to ensure a valid random index is calculated based on the number of available quizzes, preventing potential errors when no quizzes are present.
- Updated the logic to use 'nrOfQuestions' from the quiz object for slicing the quizzes array, ensuring consistent behavior in quiz selection.
- Improved code clarity by refining comments related to the quiz selection process.
This commit is contained in:
2024-12-09 20:37:04 +07:00
parent ed50f33322
commit f1f5918a65

View File

@@ -1,5 +1,5 @@
import crypto from 'crypto' import crypto from 'crypto'
import { Inject, Injectable } from '@nestjs/common' import { Inject, Injectable, Logger } from '@nestjs/common'
import { AnswerType, Role } from '@prisma/client' import { AnswerType, Role } from '@prisma/client'
import { QuestionType } from '@prisma/client' import { QuestionType } from '@prisma/client'
import { Pothos, PothosRef, PothosSchema, SchemaBuilderToken } from '@smatch-corp/nestjs-pothos' import { Pothos, PothosRef, PothosSchema, SchemaBuilderToken } from '@smatch-corp/nestjs-pothos'
@@ -195,8 +195,12 @@ export class QuizSchema extends PothosSchema {
}, },
}) })
// get amount of questions using nrOfQuestions and random index based on random // get amount of questions using nrOfQuestions and random index based on random
const randomIndex = Math.floor(random * (quizzes[0]?.nrOfQuestions ?? 1)) const randomIndex = quizzes.length > 0
return quizzes.slice(randomIndex, randomIndex + (quizzes[0]?.nrOfQuestions ?? 1)) ? Math.floor(random * quizzes.length)
: 0
const nrOfQuestions = quizzes[0]?.nrOfQuestions ?? 1
const result = quizzes.slice(randomIndex, randomIndex + nrOfQuestions)
return result
} }
// use case 2: center mentor or center owner // use case 2: center mentor or center owner