Feat[#124] 특정 태스크의 모립세트 불러오기#125
Conversation
geniusYoo
left a comment
There was a problem hiding this comment.
꼼꼼하게 리뷰 달아드렸으니, 전부 확인 후 반응을 남겨주세요!
구현은 전체적으로 잘 하셨네요!
리팩토링만 하면 더욱 깔끔한 코드가 될 것 같아요! 👍🏻
| import lombok.Getter; | ||
|
|
||
| @Getter | ||
| public class MsetDTO { |
There was a problem hiding this comment.
dto는 클라이언트와 controller 레벨에서 주고받는 객체의 형태입니다.
여기서 MsetDTO라는 객체는 TaskMsetLinkResponse 안의 mset 객체를 표현하기 위한 VO 인것으로 보여지는데요, 조금 더 적절한 이름으로 수정해보는 것은 어떨까요?
예를 들어, MsetInTask 같은 것이 있겠네요!
| private final String name; | ||
| private final String url; | ||
|
|
||
| public MsetDTO(Long id, String name, String url) { |
There was a problem hiding this comment.
TaskMsetLinkResponse의 형태처럼 정적 팩토리 메소드 패턴을 이용한 것이 아닌, 매개변수가 있는 생성자를 이용한 특별한 이유가 있을까요?
또한, 매개변수를 모두 파라미터로 받는 생성자를 작성할 때는 Lombok의 @AllArgsConstructor가 있기 때문에 코드를 더 간결하게 만들 수도 있겠네요!
| import lombok.Getter; | ||
|
|
||
| @Getter | ||
| public class MsetDTO { |
There was a problem hiding this comment.
record가 아닌 class를 사용한 이유가 있을까요?
| public class TaskMsetService { | ||
| private final TaskMsetRepository taskMsetRepository; | ||
| public List<TaskMset> getByTaskId(Long taskId) { | ||
| return taskMsetRepository.findByTaskId(taskId); |
There was a problem hiding this comment.
taskId가 존재하지 않는 경우를 핸들링해주는 코드가 필요할 것 같아요 !
| return taskMsetRepository.findByTaskId(taskId); | |
| taskMsetRepository.findByTaskId(taskId).orElseThrow( | |
| () -> /* Error Handling */ | |
| ) |
There was a problem hiding this comment.
추가적으로, orElseThrow()를 쓰려면 repository의 코드를 수정해야할텐데요 ! 같이 고민해보면 좋을 것 같네요 :)
There was a problem hiding this comment.
말씀해주신대로
taskMsetRepository.findByTaskId(taskId).orElseThrow(
() -> new NotFoundException(ErrorMessage.NOT_FOUND)
)이렇게 바꾸고
repository는
Optional을 추가해줘야할 것 같군요!
| List<TaskMset> taskMsetList = taskMsetService.getByTaskId(taskId); | ||
| List<MsetDTO> msets = taskMsetList.stream() // | ||
| .map(taskMset -> msetService.getMsetById(taskMset.getMsetId())) | ||
| .map(mset -> new MsetDTO(mset.getId(), mset.getName(), mset.getUrl())) |
There was a problem hiding this comment.
이렇게 new 연산자로 객체를 무분별하게 만들지 않기 위해 우리는 패턴을 적용했었는데요 ...! 패턴을 적용해주면 좋을 것 같네요 :)
| public TaskMsetLinkResponse getFromOtherTask(Long taskId) { | ||
| Task task = taskService.getTaskById(taskId); | ||
| List<TaskMset> taskMsetList = taskMsetService.getByTaskId(taskId); | ||
| List<MsetDTO> msets = taskMsetList.stream() // |
There was a problem hiding this comment.
map을 두번 엮어서 간결하게 코드를 표현해주신 것 아주 좋네요 :) !!
|
|
||
| import java.util.List; | ||
|
|
||
| public record TaskMsetLinkResponse( |
There was a problem hiding this comment.
근데, TaskMsetLinkResponse에는 Task는 제외해도 됩니다 :) 모립세트만 포함되면 됩니다!
📍 Issue
closes #124
✨ Key Changes
MsetApiController
Morib-Server/jaksim/src/main/java/org/sopt/jaksim/mset/api/MsetApiController.java
Lines 35 to 41 in 760e33d
TaskMsetFacade
Morib-Server/jaksim/src/main/java/org/sopt/jaksim/category/facade/TaskMsetFacade.java
Lines 24 to 42 in 760e33d
TaskMsetRepository
Morib-Server/jaksim/src/main/java/org/sopt/jaksim/mset/repository/TaskMsetRepository.java
Lines 8 to 10 in 760e33d
TaskService
Morib-Server/jaksim/src/main/java/org/sopt/jaksim/task/service/TaskService.java
Lines 69 to 72 in 760e33d
MsetSerive
Morib-Server/jaksim/src/main/java/org/sopt/jaksim/mset/service/MsetService.java
Lines 32 to 36 in 760e33d
TaskMsetLinkResponse
Morib-Server/jaksim/src/main/java/org/sopt/jaksim/category/dto/TaskMsetLinkResponse.java
Lines 9 to 16 in 760e33d
MsetDTO
Morib-Server/jaksim/src/main/java/org/sopt/jaksim/mset/domain/MsetDTO.java
Lines 5 to 16 in 760e33d
💬 To Reviewers