diff --git a/src/main/java/blacktokkies/toquiz/domain/question/api/QuestionApi.java b/src/main/java/blacktokkies/toquiz/domain/question/api/QuestionApi.java index 9273c48..efa4c93 100644 --- a/src/main/java/blacktokkies/toquiz/domain/question/api/QuestionApi.java +++ b/src/main/java/blacktokkies/toquiz/domain/question/api/QuestionApi.java @@ -6,6 +6,7 @@ import blacktokkies.toquiz.domain.question.dto.response.GetQuestionsResponse; import blacktokkies.toquiz.domain.question.dto.response.QuestionResponse; import blacktokkies.toquiz.domain.question.dto.response.ToggleLikeQuestionResponse; +import blacktokkies.toquiz.global.common.response.SuccessMessage; import blacktokkies.toquiz.global.common.response.SuccessResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -61,4 +62,14 @@ public ResponseEntity> modifyQuestion( return ResponseEntity.ok(new SuccessResponse<>(response)); } + + @DeleteMapping("api/questions/{questionId}") + public ResponseEntity deleteQuestion( + @PathVariable Long questionId, + @CookieValue("active_info_id") String activeInfoId + ){ + questionService.deleteQuestion(questionId, activeInfoId); + + return ResponseEntity.ok(SuccessMessage.QUESTION_DELETE); + } } diff --git a/src/main/java/blacktokkies/toquiz/domain/question/application/QuestionService.java b/src/main/java/blacktokkies/toquiz/domain/question/application/QuestionService.java index fd20d6f..947bcd0 100644 --- a/src/main/java/blacktokkies/toquiz/domain/question/application/QuestionService.java +++ b/src/main/java/blacktokkies/toquiz/domain/question/application/QuestionService.java @@ -82,18 +82,24 @@ public QuestionResponse modifyQuestion( String activeInfoId, Long questionId) { Question question = getQuestion(questionId); - String panelSid = question.getPanel().getSid(); - List createdQuestions = getCreatedQuestions(getActiveInfo(activeInfoId), panelSid); - checkMyActiveQuestion(createdQuestions, questionId); + checkMyCreateQuestion(activeInfoId, question); // 자신이 생성하지 않은 질문이면 예외처리 question.updateContent(modifyQuestionRequest.getContent()); - questionRepository.save(question); return QuestionResponse.toDto(question); } + @Transactional + public void deleteQuestion(Long questionId, String activeInfoId) { + Question question = getQuestion(questionId); + + checkMyCreateQuestion(activeInfoId, question); // 자신이 생성하지 않은 질문이면 예외처리 + + questionRepository.delete(question); + } + private void updateLikedQuestions(List likedQuestionIds, Question question, boolean active) { Long questionId = question.getId(); @@ -149,8 +155,11 @@ private List getLikedQuestions(ActiveInfo activeInfo, String panelSid) { } // ------------ [검증 메서드] ------------ // - private void checkMyActiveQuestion(List myActiveQuestions, Long questionId){ - boolean isMyActiveQuestion = myActiveQuestions.stream().anyMatch(id -> Objects.equals(id, questionId)); - if(!isMyActiveQuestion) throw new RestApiException(NOT_ACTIVE_QUESTION); + private void checkMyCreateQuestion(String activeInfoId, Question question){ + String panelSid = question.getPanel().getSid(); + List createdQuestions = getCreatedQuestions(getActiveInfo(activeInfoId), panelSid); + + boolean isMyActiveQuestion = createdQuestions.stream().anyMatch(id -> Objects.equals(id, question.getId())); + if(!isMyActiveQuestion) throw new RestApiException(NOT_MY_CREATE_QUESTION); } }