Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] 7일 이후 문답 구현 #122

Merged
merged 5 commits into from
Feb 9, 2024
Merged

Conversation

ddongseop
Copy link
Member

@ddongseop ddongseop commented Feb 8, 2024

📌 관련 이슈

closed #121

✨ 어떤 이유로 변경된 내용인지

"엄빠도 어렸다"는 더이상 7일에 멈추는 서비스가 아닙니다.

  • 지금 현재 DB에 있는 질문들의 타입

    1. 고정 질문 -> 어린시절의 질문 1개
    2. 메인 질문 -> 큰 줄기가 되는 질문들 6개
    3. 타입 질문 -> 온보딩에서의 답변에 따라서 변경되는 질문 7개
    4. 미사용 질문 -> 아직 사용되지 않은 질문 4개 + 12개 더 추가 예정
  • 7일 이후에 새롭게 추가될 때 해야하는 작업

    1. 위 4개의 타입 중 메인 질문 + 미사용 질문만 뽑아온다
    2. 쭉 뽑아온 질문들 중에서 내가 이미 주고받은 질문은 제한다 (여기까지는 쿼리로 한방에 해결)
    3. 이전에 했던 질문과 다른 섹션 질문이 있는지 먼저 찾는다
    4. 없다면 동일한 섹션 질문이라도 넣어둔다
    5. 그것마저 없다면 멈춘다

🙏 검토 혹은 리뷰어에게 남기고 싶은 말

@ddongseop ddongseop added 🔥 Pull Request PR 날림 ddongseop🍑 🪄API 서버 API 통신 🔧Modify 코드 수정 (기능의 변화가 있을 때) ☁️Database DB 관련 labels Feb 8, 2024
@ddongseop ddongseop self-assigned this Feb 8, 2024
parentchild.initQnA();
parentchild.addQnA(newQnA);
parentchild.initQna();
parentchild.setQna(newQnA);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

초기 세팅으로 Qna를 세팅할 때는 setQna를,
7일 이후에 Qna가 추가될 때는 addQna를 쓰는 방식으로 구현했습니다!

Copy link
Member

@0lynny 0lynny left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

복잡한 로직 짜느라 .. 수고 많으셨습니다~ 짱짱

@PatchMapping("/qna/restart")
@ResponseStatus(HttpStatus.OK)
public ApiResponse restartQna(Principal principal) {

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p5;
이거 좀 신경쓰이네요..

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 굉장히 킹받지만,, 이때 이렇게 다 짰었어서 추후 리팩토링때 변경할 예정입니다!

Comment on lines 348 to 357
// 5. 이 경우 아예 추가될 질문이 없으므로 예외 발생시킴
List<Question> targetQuestions = questionRepository.findByTypeInAndIdNotIn(types, doneQuestionIds);
if (targetQuestions.isEmpty()) {
throw new CustomException(QUESTION_NOT_FOUND_ERROR);
}

QuestionSection section = qnaList.get(parentchild.getCount() - 1).getQuestion().getSection();
List<Question> differentSectionQuestions = targetQuestions.stream()
.filter(question -> !question.getSection().equals(section))
.collect(Collectors.toList());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요 부분 나중에 쿼리로 한번에 처리해도 좋을 것 같아요!!!

Copy link
Member Author

@ddongseop ddongseop Feb 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

targetQuestions 중에서 section과 다른 differentSectionQuestions, section과 일치하는 equalSectionQuestions이 둘다 필요할 수도 있기 때문에 (section과 다른 질문이 없을 경우)
쿼리로 묶을 수 있는 범위가 targetQuestions까지라고 생각했습니다!

질문의 수에 따라서 한번에 쿼리로 처리하는게 나을지에 대한 해답이 달라질 것 같습니다
일단 현재는 질문이 30개 수준이기 때문에 쿼리 수를 늘리기보다는 현재처럼 처리하다가, 추후에 질문이 많아지게 되면 고려해보겠습니당!

Copy link
Member

@jun02160 jun02160 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굳굳 수고하셨습니다!! 👍

Comment on lines 350 to 352
if (targetQuestions.isEmpty()) {
throw new CustomException(QUESTION_NOT_FOUND_ERROR);
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

질문이 더 이상 없는 경우에 대해 기획 측에서 넘겨주는 내용에 따라 예외로 던지지 않는 방향도 고려할 수 있을 것 같아요!!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 부분 501 에러로 처리하도록 적절히 변경했습니다! (서버 알림과도 연동)

@ddongseop ddongseop merged commit 92a07e3 into develop Feb 9, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🪄API 서버 API 통신 ☁️Database DB 관련 ddongseop🍑 🔧Modify 코드 수정 (기능의 변화가 있을 때) 🔥 Pull Request PR 날림
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEAT] 7일 이후 문답 구현
3 participants