- userService ( 수정 전 )
@Transactional public void approveIsPass(Long id) { HostUser hostUser = hostUserRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException(USER_NOT_FOUND.getMessage())); hostUser.updateApprove(ApproveType.PASS); User user = userRepository.findById(hostUser.getId()) .orElseThrow(() -> new IllegalArgumentException(USER_NOT_FOUND.getMessage())); user.updateRole(RoleType.HOST); }
Host 가입 여부에 따라, 유저의 권한을 NORMAL에서 HOST로 바꿔주고 호스트유저에 대해서는 신청한 가입에 대한 승인여부를 어드민페이지에 나타내는 역할을 나타내고 싶음.
- 잘못된 점
- User와 HostUser는 OneToOne으로 매핑관계가 맺어져있다.
UserRepository와 HostUserRepository 두 가지를 각각 부를 필요없이 UserRepository에서 접근하는 편이 좋다.- updateRole과 updateApprove가 나눠져있기도 하고, 한눈에 명시적으로 무슨일을 하고 있는지 알 수 없다.
위에 써져있는, 신청한 가입에 대한 승인여부를 나타내주고 싶다! 라는 목적에 맞게, 메소드 명을 만들어주고 updateRole과 updateApprove를 합친 연관관계 메소드를 만들어주는 편이 좋음- 현재 코드는 Long id로 hostUser의 pk를 받아오고 있지만, User에서 연관관계에 대한 메소드를 만들어주는 편이 좋으므로, Long id로 user_number값을 받아오는 게 좋다
- UserService (수정 후)
@Transactional public void approveIsPass(Long id) { User user = userRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException(USER_NOT_FOUND.getMessage())); user.updateNormalUserToHostUser(user); }
👍👍👍👍👍👍👍👍 예지님이 있어서 너무 든든합니다 👍👍👍👍👍👍👍👍👍