Skip to content

Instantly share code, notes, and snippets.

View bmelnychuk's full-sized avatar

Bogdan Melnychuk bmelnychuk

  • Hamburg, Germany
View GitHub Profile
class GetNextQuestion {
questionRepository: QuestionRepository;
nextQuestionPolicy: NextQuestionPolicy;
async invoke(categoryId: string): Promise<Question> {
const availableQuestions = await this.questionRepository.getAvailableQuestions(
categoryId
);
return this.nextQuestionPolicy.getNextQuestion(availableQuestions);
}
const questionGenerationPolicy = new RandomNextQuestionPolicy();
const answerValidationPolicy = new TextEqualityAnswerValidationPolicy();
const questionRepository = new QuestionStoreRepository();
const getNextQuestionUseCase = new GetNextQuestion(
questionRepository, questionGenerationPolicy
);
const answerQuestionUseCase = new AnswerQuestion(
questionRepository, answerValidationPolicy