-
Notifications
You must be signed in to change notification settings - Fork 1
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] 모임 신청자 리스트 조회 API 마이그레이션 #201
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.
테스트 코드까지 너무 꼼꼼하게 잘 작성해주신 것 같아요 !!!! sql문으로 테스트 코드 시, 필요한 셋업 해두는거 좋은거 같아요 ! 많이 배워갑니다 🙇♀️🙇♀️ 그리고 간단한 제 생각 코멘트로 조금 남겨봤으니 확인해주시면 감사할거 같아요 :) 정말정말 고생하셨습니다 !!
그리고 리뷰 노트에 남겨주신 내용 잘 다 확인했습니다 ! 아래는 남겨주신 부분에 대한 제 생각을 간단하게 정리해봤습니다.
- status(모임 승인, 거절, 대기 상태)를 받아서 Enum으로 변경하는 과정을 MeetingGetApplyListCommand 내에서 구현했는데요! 이 부분이 뭔가 좀 어색하게 느껴져서 더 좋은 방법있으시면 환영입니다..!
이건 저도 헷갈려서 여쭤보는건데, DB에는 status 값이 정수로 저장이 되어있고 이를 코드단에 Enum으로 관리하기 위해서 엔티티에는 Enum으로 Convert 해놓고 있는데요 !
QueryDsl을 통해 where 절로 해당 값을 기준으로 가져올 때 쿼리로 받은 Integer 그대로 Enum 변환없이 하면 오류가 나는걸까요 ?!
뿐만 아니라 jsonb 타입도 db에서 불러오는 과정에서 가장 최근 활동(UserActivity)를 찾는 로직을 ApplicantDto 에 구현했는데요! 이 부분도 어색하다고는 느껴졌지만 더 좋은 방법이 안 떠올라 일단 말씀드려봅니다!
음,,, 어떤 부분이 고민인지 충분히 공감합니다 ! 제 생각에도 특정 API 응답 형태에 맞춰진 데이터 처리 로직을 DTO 내부에 두어 API 스펙이 변경되더라도 관련 로직을 한 곳에서 관리할 수 있다는 점에서는 Dto 단에 로직을 구현해도 좋을 거 같은데 !
Dto가 데이터 전달의 역할 이상을 하게 되면 SRP(단일 책임 원칙)을 벗어나는 것 같아, 최근 기수 뽑아내는 로직이 다른 곳에서도 중복으로 사용될 가능성이 있다면 객체가 스스로 상태를 관리하도록 엔티티 내에 구현하거나, util 클래스로 분리하는 것도 고려해볼 만하다고 생각합니다 ! 이에 대해서는 다른 분들의 의견도 궁금하네요 !!
main/src/main/java/org/sopt/makers/crew/main/meeting/v2/MeetingV2Api.java
Outdated
Show resolved
Hide resolved
main/src/main/java/org/sopt/makers/crew/main/meeting/v2/MeetingV2Controller.java
Outdated
Show resolved
Hide resolved
...src/main/java/org/sopt/makers/crew/main/meeting/v2/dto/query/MeetingGetApplyListCommand.java
Outdated
Show resolved
Hide resolved
main/src/main/java/org/sopt/makers/crew/main/meeting/v2/service/MeetingV2ServiceImpl.java
Show resolved
Hide resolved
main/src/main/java/org/sopt/makers/crew/main/meeting/v2/service/MeetingV2ServiceImpl.java
Outdated
Show resolved
Hide resolved
main/src/main/java/org/sopt/makers/crew/main/entity/apply/ApplySearchRepositoryImpl.java
Outdated
Show resolved
Hide resolved
main/src/main/java/org/sopt/makers/crew/main/entity/apply/ApplySearchRepositoryImpl.java
Show resolved
Hide resolved
main/src/main/java/org/sopt/makers/crew/main/entity/apply/ApplySearchRepositoryImpl.java
Outdated
Show resolved
Hide resolved
main/src/main/java/org/sopt/makers/crew/main/entity/apply/ApplySearchRepositoryImpl.java
Outdated
Show resolved
Hide resolved
많은 고민과 정성을 한 것이 느껴지네요 !! 저도 항상 많이 배우고 있어요 :)
예슬님 의견대로 그대로 조회하는 것도 가능할 것 같기는 하지만 그렇게 되면 의도치 않은 값이 들어 왔을 때 대처가 안될 것 같다는 생각이 드네요 !
이 부분은 예슬님과 동일한 의견입니다~ |
main/src/main/java/org/sopt/makers/crew/main/entity/apply/ApplySearchRepositoryImpl.java
Outdated
Show resolved
Hide resolved
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.
수고하셨습니다 !!!!
* [ADD] querydsl 의존성 추가 * [ADD] queryFactory 추가 * [ADD] 신청자 정보 관련 Dto 추가 * [FEAT] querydsl를 사용한 신청자 리스트 조회 * [ADD] 신청자 정보 관련 Dto 추가 * [ADD] 컨트롤러 -> 서비스 간의 Dto 추가 * [ADD] 신청자 리스트 조회 API 스웨거 반영 * [FEAT] 신청자 리스트 조회 컨트롤러 구현 * [FEAT] 신청자 리스트 조회 서비스 로직 구현, 페이지네이션 구현 * [ADD] querydsl 사용을 위한 config 추가 * [ADD] ApplyRepositoryTest를 위한 sql 추가 * [REFACTOR] apply와 Meeting 간의 의존성 줄이기 * [TEST] ApplyRepository querydsl 로직 테스트 * [CHORE] type(신청, 초대) 제거 * [CHORE] @ModelAttribute 사용 * [CHORE] 주석제거 * [CHORE] studyCreatorId -> meetingCreatorId 변경 * [CHORE] join문 삭제 * [CHORE] leftjoin -> innerjoin 변경 * [CHORE] Dto 변수명 변경 * [CHORE] Dto 변수명 변경 * [CHORE] jsonb 타입 처리 UserUtil에서 처리 * [CHORE] 디폴트 value 설정
👩💻 Contents
맥락 :
모임 신청자 리스트 조회 API
에 기능적 이슈가 있었고, 해당 API에 대한 수정이 필요한 상황이었습니다. 이왕 수정해야하기 때문에 아예 spring으로 마이그레이션하면서 수정하는게 더 낫겠다고 판단해서 진행했습니다.모임 신청자 리스트 조회 API 마이그레이션 했습니다.
스터디 개설자가 아닌 경우
전하는 말
에 빈값이 들어가도록 구현했습니다.📝 Review Note
페이지네이션
querydsl
fetchFirst
를 사용했습니다!테스트 코드
@Sql
를 사용했습니다. 해당 sql 파일은 오직ApplyRepositoryTest
클래스에서만 사용하는 것을 의도했습니다.아쉬운 점
MeetingGetApplyListCommand
내에서 구현했는데요! 이 부분이 뭔가 좀 어색하게 느껴져서 더 좋은 방법있으시면 환영입니다..!ApplicantDto
에 구현했는데요! 이 부분도 어색하다고는 느껴졌지만 더 좋은 방법이 안 떠올라 일단 말씀드려봅니다!📣 Related Issue
✅ 점검사항