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) }