-
Notifications
You must be signed in to change notification settings - Fork 6
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
[BE] Hotfix/#473 Soft Delete 반영해 조회하도록 쿼리 수정 #521
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
도이! 연휴에 너어어무우우 고생하셨슴둥글레차
의문점 하나만 남겼으니 대답해주시면 감사할 것 같아용!
@@ -55,7 +56,7 @@ public Long saveTopic(AuthMember member, TopicCreateRequest request) { | |||
Topic topic = convertToTopic(member, request); | |||
List<Long> pinIds = request.pins(); | |||
|
|||
if (0 < pinIds.size()) { | |||
if (!pinIds.isEmpty()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
호호 바뀌었군요..ㅋㅋㅋㅋ
@@ -116,7 +116,7 @@ private void validateReadableTopic(AuthMember member, Topic topic) { | |||
} | |||
|
|||
public List<TopicDetailResponse> findDetailsByIds(AuthMember authMember, List<Long> ids) { | |||
List<Topic> topics = topicRepository.findByIdIn(ids); | |||
List<Topic> topics = topicRepository.findByIdInAndIsDeletedFalse(ids); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기서 그러면 pin도 deleted false 인 애로 가져오나요??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아니요... 맞아요 이 부분이 문제가 있어요. 지연로딩에서 수행하는 쿼리는 저희가 커스텀할 수 없는 것 같더라고요
그래서 @Where
어노테이션을 사용하면 이 문제가 해결될 것 같은데,
일단 운영 서버에 급하게 필요한 부분만 확실히 구현하고자(삭제 된 Topic이 안보여야 함) 사전논의된 방향으로 진행했습니다.
일단 빠른 반영 후, 리팩터링 방향에서 이 부분을 개선하는 건 어떻게 생각하시나요..?! 아직 pin이 삭제될 상황은 많지 않을 것 같아서요.
리팩터링 방향으로는 조회 시 @Where
어노테이션을 사용하고,
이로 인해 깨지는 테스트는 테스트 코드의 로직을 수정하는 게 더 적절할 거란 생각도 듭니다.
(ex. 핀 삭제 후, pinRepo.findById()으로 핀의 필드 상태를 확인하는 것이 아니라 pinRepo.isExistById()를 호출)
그래서 일단 반영 후, 리팩터링 차원에서 테스트 코드 수정 및 @Where
어노테이션을 적용하는 방향은 어떨까 해요.
그런데 그 전에, 제가 지식이 부족해서 그런지 @cpot5620가 슬랙으로 말씀해주셨던
@Where
을 쓸 거면 @SqlDelete
을 같이 써야한다는 말씀이 아직 정확히 이해가 안간 것 같아요.
@SqlDelete
를 쓰면 테스트 코드에서 매번 flush, clear를 해주어야 한다면
soft delete하는 쿼리는 지금 그대로 쓰고(@SqlDelete
안쓰고), 조회만을 위해 @Where
을 쓰면 안되나용 ....???
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아주 장문으로 남겨주셨네요! 일단 이 상태로 가고 추후 개선하는 것 동의합니다. 저도 코멘트 남기고 나서 pin 삭제하는 경우가 있나 생각했거든요 물론 토픽도 동일하긴 하지만요 허허허허, 그리고 말씀하신 @where 어노테이션 건도 어떤 말씀이신지 명확히 파악했어요! 이 문제는 쥬니랑 조금 더 이야기해보고 결정해볼까요??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
설명하려다보니 구구절절쓰..^_^ 좋슴닥
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
굳
작업 대상
📄 작업 내용
🙋🏻 주의 사항
운영 서버에 빠른 반영이 필요한 사안이라 main 의 hotfix로 올립니다.
이 PR 이후 develop-BE-2 브랜치는 main pull 땡겨오고 작업하면 좋을 것 같아요
추가로 mutlipleBag 발생 문제로 인해 Topic의 findByIdAndIsDeletedFalse 조인 항목 중 bookmarks를 삭제했습니다.
스크린샷
📎 관련 이슈
closed #473
레퍼런스