From 43a2f11f80f9340cfb36737eb3050b0e864ba56d Mon Sep 17 00:00:00 2001 From: Andres Date: Sat, 12 Aug 2023 15:40:47 +0200 Subject: [PATCH] fix card images upload --- src/modules/decks/decks.controller.ts | 2 +- src/modules/decks/use-cases/create-card-use-case.ts | 5 ++++- .../use-cases/get-random-card-in-deck-use-case.ts | 11 ++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/modules/decks/decks.controller.ts b/src/modules/decks/decks.controller.ts index 1743fe8..cb786d9 100644 --- a/src/modules/decks/decks.controller.ts +++ b/src/modules/decks/decks.controller.ts @@ -155,9 +155,9 @@ export class DecksController { createCardInDeck( @Param('id') id: string, @Req() req, - @UploadedFiles() @Body() card: CreateCardDto, + @UploadedFiles() files?: { questionImg: Express.Multer.File[]; answerImg: Express.Multer.File[] } ): Promise { return this.commandBus.execute( diff --git a/src/modules/decks/use-cases/create-card-use-case.ts b/src/modules/decks/use-cases/create-card-use-case.ts index 8029022..a0cd37e 100644 --- a/src/modules/decks/use-cases/create-card-use-case.ts +++ b/src/modules/decks/use-cases/create-card-use-case.ts @@ -1,4 +1,4 @@ -import { ForbiddenException } from '@nestjs/common' +import { ForbiddenException, NotFoundException } from '@nestjs/common' import { CommandHandler, ICommandHandler } from '@nestjs/cqrs' import { FileUploadService } from '../../../infrastructure/file-upload-service/file-upload.service' @@ -30,6 +30,9 @@ export class CreateCardHandler implements ICommandHandler { const deck = await this.decksRepository.findDeckById(command.deckId) + if (!deck) { + throw new NotFoundException(`Deck with id ${command.deckId} not found`) + } if (deck.userId !== command.userId) { throw new ForbiddenException(`You can't create cards in a deck that you don't own`) } 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 9ee54e1..c67380c 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 @@ -1,4 +1,4 @@ -import { ForbiddenException, NotFoundException } from '@nestjs/common' +import { ForbiddenException, Logger, NotFoundException } from '@nestjs/common' import { CommandHandler, ICommandHandler } from '@nestjs/cqrs' import { Prisma } from '@prisma/client' import { pick } from 'remeda' @@ -18,6 +18,7 @@ type CardWithGrade = Prisma.cardGetPayload<{ include: { grades: true } }> @CommandHandler(GetRandomCardInDeckCommand) export class GetRandomCardInDeckHandler implements ICommandHandler { + logger = new Logger(GetRandomCardInDeckHandler.name) constructor( private readonly cardsRepository: CardsRepository, private readonly decksRepository: DecksRepository @@ -50,6 +51,14 @@ export class GetRandomCardInDeckHandler implements ICommandHandler { const randomCard = await this.getSmartRandomCard(cards) + if (!randomCard) { + this.logger.error(`No cards found in deck with id ${randomCard.deckId}`, { + previousCardId, + randomCard, + cards, + }) + throw new NotFoundException(`No cards found in deck with id ${randomCard.deckId}`) + } if (randomCard.id === previousCardId && cards.length !== 1) { return this.getNotDuplicateRandomCard(cards, previousCardId) }