-
Notifications
You must be signed in to change notification settings - Fork 5
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
나의 디스커션 목록 조회 API 구현 (issue #469) #471
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.
릴리 안녕하세요. 아톰입니다.😀
몇 가지 코멘트 남겼습니다. 고생 많으셨고 오늘 하루도 화이팅입니다!
@@ -49,4 +49,12 @@ public ResponseEntity<ApiResponse<DiscussionResponse>> createDiscussion( | |||
|
|||
return ResponseEntity.ok(new ApiResponse<>(response)); | |||
} | |||
|
|||
@GetMapping("/discussions/mine") | |||
@Operation(summary = "나의 디스커션 목록 조회 API", description = "내가 제출한 디스커션 목록을 조회합니다.") |
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.
[Request Changes]
아래와 같은 느낌은 어떨까요?
@Operation(summary = "나의 디스커션 목록 조회 API", description = "내가 제출한 디스커션 목록을 조회합니다.") | |
@Operation(summary = "나의 디스커션 목록 조회 API", description = "내가 작성한 디스커션 목록을 조회합니다.") |
|
||
List<Discussion> findAllByMember_Id(Long memberId); |
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.
[Request Changes]
이전에 제대로 확인하지 못한 점 죄송합니다.
findAllByMember_Id 상단에 findByMissionAndHashTagName 메서드도 findAll로 시작하도록 변경 부탁 드립니다. 그리고 해당 쿼리는 N + 1이 발생하지 않을까요?
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.
아 list 반환하는 경우에 findAll 이라고 알려주셨던걸 또 까먹어버렸네요 죄송합니다 🥹🥹
확인해보니 해당 쿼리도 조회가 4번이나 나가서 수정해놓았습니다!
select
d1_0.id,
d1_0.content,
d1_0.created_at,
ht1_0.discussion_id,
ht1_0.hash_tag_id,
ht2_0.id,
ht2_0.name,
d1_0.member_id,
m2_0.id,
m2_0.created_at,
m2_0.email,
m2_0.image_url,
m2_0.name,
m2_0.provider,
m2_0.social_id,
m1_0.id,
m1_0.url,
m1_0.summary,
m1_0.thumbnail,
m1_0.title,
d1_0.title
from
discussion d1_0
join
mission m1_0
on m1_0.id=d1_0.mission_id
join
member m2_0
on m2_0.id=d1_0.member_id
join
discussion_hash_tag ht1_0
on d1_0.id=ht1_0.discussion_id
join
hash_tag ht2_0
on ht2_0.id=ht1_0.hash_tag_id
where
d1_0.member_id=?
order by
ht1_0.discussion_id,
ht1_0.hash_tag_id
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.
릴리 안녕하세요. 아톰입니다.
쿼리 깔끔하게 개선해주셨네요. 👍
그리고 문득든 생각인데, 어디는 lazy 로딩 막고, 어디는 안막는게 헷갈려서 기본적으로 fetch join 사용하고 하나하나 쿼리 튜닝해나가는 방식이 편리하겠다 생각했어요. 어디는 한방 쿼리가 더 비쌀 수도 있으니까요. |
8161b67
to
33179d9
Compare
구현 요약
대시보드 페이지 - 내가 작성한 디스커션 목록 조회 API
SummarizedDiscussionResponse
와 응답이 같아서 DTO 재사용 하였습니다.그런데 추후 디스커션 리스트 조회에서 스크랩 기능이 생길 경우 분리가 필요합니다!
연관 이슈
참고
코드 리뷰에
RCA 룰
을 적용할 시 참고해주세요.