Skip to content

Commit

Permalink
feat: 질문 삭제 로직 (#80)
Browse files Browse the repository at this point in the history
  • Loading branch information
soomanbaek committed Oct 19, 2023
1 parent c9dc597 commit 8856eeb
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -61,4 +62,14 @@ public ResponseEntity<SuccessResponse<QuestionResponse>> modifyQuestion(

return ResponseEntity.ok(new SuccessResponse<>(response));
}

@DeleteMapping("api/questions/{questionId}")
public ResponseEntity<SuccessMessage> deleteQuestion(
@PathVariable Long questionId,
@CookieValue("active_info_id") String activeInfoId
){
questionService.deleteQuestion(questionId, activeInfoId);

return ResponseEntity.ok(SuccessMessage.QUESTION_DELETE);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -82,18 +82,24 @@ public QuestionResponse modifyQuestion(
String activeInfoId,
Long questionId) {
Question question = getQuestion(questionId);
String panelSid = question.getPanel().getSid();

List<Long> 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<Long> likedQuestionIds, Question question, boolean active) {
Long questionId = question.getId();

Expand Down Expand Up @@ -149,8 +155,11 @@ private List<Long> getLikedQuestions(ActiveInfo activeInfo, String panelSid) {
}

// ------------ [검증 메서드] ------------ //
private void checkMyActiveQuestion(List<Long> 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<Long> 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);
}
}

0 comments on commit 8856eeb

Please sign in to comment.