From 39010b73d618606e0d43da977d302d634f5fbe14 Mon Sep 17 00:00:00 2001 From: Andres Date: Mon, 7 Aug 2023 14:34:12 +0200 Subject: [PATCH] fix infinite loop --- src/modules/decks/decks.controller.ts | 21 ++++++++++++------- .../get-random-card-in-deck-use-case.ts | 3 ++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/modules/decks/decks.controller.ts b/src/modules/decks/decks.controller.ts index b9c909d..f9a7193 100644 --- a/src/modules/decks/decks.controller.ts +++ b/src/modules/decks/decks.controller.ts @@ -193,13 +193,20 @@ export class DecksController { description: 'Save the grade of a card', summary: 'Save the grade of a card', }) - async saveGrade(@Param('id') id: string, @Req() req, @Body() body: SaveGradeDto) { - const saved = await this.commandBus.execute( - new SaveGradeCommand(req.user.id, { cardId: body.cardId, grade: body.grade }) - ) + async saveGrade(@Param('id') deckId: string, @Req() req, @Body() body: SaveGradeDto) { + const promises = [ + this.commandBus.execute(new GetRandomCardInDeckCommand(req.user.id, deckId, body.cardId)), + this.commandBus.execute( + new SaveGradeCommand(req.user.id, { cardId: body.cardId, grade: body.grade }) + ), + ] - return await this.commandBus.execute( - new GetRandomCardInDeckCommand(req.user.id, saved.deckId, saved.id) - ) + try { + const [card] = await Promise.all(promises) + + return card + } catch (error) { + throw error + } } } diff --git a/src/modules/decks/use-cases/get-random-card-in-deck-use-case.ts b/src/modules/decks/use-cases/get-random-card-in-deck-use-case.ts index 9aa2f70..29fd2a1 100644 --- a/src/modules/decks/use-cases/get-random-card-in-deck-use-case.ts +++ b/src/modules/decks/use-cases/get-random-card-in-deck-use-case.ts @@ -27,6 +27,7 @@ export class GetRandomCardInDeckHandler implements ICommandHandler): Promise { const selectionPool: Array = [] + console.log(cards.length) cards.forEach(card => { // Calculate the average grade for the card const averageGrade = @@ -51,7 +52,7 @@ export class GetRandomCardInDeckHandler implements ICommandHandler { const randomCard = await this.getSmartRandomCard(cards) - if (randomCard.id === previousCardId) { + if (randomCard.id === previousCardId && cards.length !== 1) { return this.getNotDuplicateRandomCard(cards, previousCardId) }