Skip to content

Commit e10e5a8

Browse files
authored
refactor : 그룹 가입 요청 목록 조회 (#407)
1 parent 3674790 commit e10e5a8

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

src/main/java/com/gamzabat/algohub/feature/group/studygroup/repository/JoinRequestRepository.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,22 @@
33
import java.util.List;
44

55
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.data.jpa.repository.Query;
7+
import org.springframework.data.repository.query.Param;
68

79
import com.gamzabat.algohub.feature.group.studygroup.domain.JoinRequest;
810

911
public interface JoinRequestRepository extends JpaRepository<JoinRequest, Long> {
1012

1113
boolean existsByGroup_IdAndRequester_Id(Long groupId, Long userId);
1214

13-
List<JoinRequest> findAllByGroup_Id(Long groupId);
15+
@Query("""
16+
select jr
17+
from JoinRequest jr
18+
join fetch jr.requester u
19+
join fetch jr.group g
20+
where g.id = :groupId
21+
""")
22+
List<JoinRequest> findAllByGroupIdWithFetch(@Param("groupId") Long groupId);
23+
1424
}

src/main/java/com/gamzabat/algohub/feature/group/studygroup/service/JoinRequestService.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.time.LocalDate;
44
import java.util.List;
5-
import java.util.Optional;
65

76
import org.springframework.http.HttpStatus;
87
import org.springframework.stereotype.Service;
@@ -59,12 +58,15 @@ public void joinRequest(User user, Long groupId) {
5958
@Transactional(readOnly = true)
6059
public List<JoinRequest> getAllJoinRequests(User user, Long groupId) {
6160
StudyGroup studyGroup = studyGroupRepository.findById(groupId)
62-
.orElseThrow(() -> new StudyGroupValidationException(HttpStatus.NOT_FOUND.value(), "존재하지 않는 그룹 입니다."));
63-
Optional<GroupMember> groupMember = groupMemberRepository.findByUserAndStudyGroup(user, studyGroup);
64-
if (groupMember.isPresent() && RoleOfGroupMember.isParticipant(groupMember.get()) || groupMember.isEmpty()) {
61+
.orElseThrow(() -> new StudyGroupValidationException(
62+
HttpStatus.NOT_FOUND.value(), "존재하지 않는 그룹 입니다."));
63+
final boolean noAuthority = groupMemberRepository.findByUserAndStudyGroup(user, studyGroup)
64+
.map(RoleOfGroupMember::isParticipant)
65+
.orElse(true);
66+
if (noAuthority) {
6567
throw new JoinRequestException("요청 목록을 조회할 권한이 없습니다.");
6668
}
67-
return joinRequestRepository.findAllByGroup_Id(groupId);
69+
return joinRequestRepository.findAllByGroupIdWithFetch(groupId);
6870
}
6971

7072
@Transactional

src/test/java/com/gamzabat/algohub/service/JoinRequestServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class JoinRequestServiceTest {
5353
private NotificationSettingRepository notificationSettingRepository;
5454
@Mock
5555
private RankingRepository rankingRepository;
56-
56+
5757
private User user, owner, user2, user3, requester;
5858
private StudyGroup group;
5959
private Problem problem1, problem2;
@@ -200,7 +200,7 @@ void getAllJoinRequests_Success() {
200200
// given
201201
when(studyGroupRepository.findById(10L)).thenReturn(Optional.of(group));
202202
when(groupMemberRepository.findByUserAndStudyGroup(owner, group)).thenReturn(Optional.of(ownerGroupmember));
203-
when(joinRequestRepository.findAllByGroup_Id(10L)).thenReturn(List.of(joinRequest));
203+
when(joinRequestRepository.findAllByGroupIdWithFetch(10L)).thenReturn(List.of(joinRequest));
204204

205205
// when
206206
List<JoinRequest> requests = joinRequestService.getAllJoinRequests(owner, 10L);

0 commit comments

Comments
 (0)