Skip to content

Commit 195c403

Browse files
committed
Refactor: 예약 목록 조회 시 상태 필터링 가능하게 변경
1 parent b050721 commit 195c403

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

back/src/main/java/com/back/domain/mentoring/reservation/controller/ReservationController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.back.domain.member.member.service.MemberStorage;
55
import com.back.domain.member.mentee.entity.Mentee;
66
import com.back.domain.member.mentor.entity.Mentor;
7+
import com.back.domain.mentoring.reservation.constant.ReservationStatus;
78
import com.back.domain.mentoring.reservation.dto.ReservationDto;
89
import com.back.domain.mentoring.reservation.dto.request.ReservationRequest;
910
import com.back.domain.mentoring.reservation.dto.response.ReservationPagingResponse;
@@ -33,10 +34,11 @@ public class ReservationController {
3334
@Operation(summary = "나의 예약 목록 조회", description = "본인의 예약 목록을 조회합니다. 로그인 후 조회할 수 있습니다.")
3435
public RsData<ReservationPagingResponse> getReservations(
3536
@RequestParam(defaultValue = "0") int page,
36-
@RequestParam(defaultValue = "10") int size
37+
@RequestParam(defaultValue = "10") int size,
38+
@RequestParam(required = false)ReservationStatus status
3739
) {
3840
Member member = rq.getActor();
39-
Page<ReservationDto> reservationPage = reservationService.getReservations(member, page, size);
41+
Page<ReservationDto> reservationPage = reservationService.getReservations(member, page, size, status);
4042
ReservationPagingResponse resDto = ReservationPagingResponse.from(reservationPage);
4143

4244
return new RsData<>(

back/src/main/java/com/back/domain/mentoring/reservation/repository/ReservationRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,23 @@ Optional<Reservation> findByIdAndMember(
3333
SELECT r
3434
FROM Reservation r
3535
WHERE r.mentor.member.id = :memberId
36+
AND (:status IS NULL OR r.status = :status)
3637
""")
3738
Page<Reservation> findAllByMentorMember(
3839
@Param("memberId") Long memberId,
40+
@Param("status") ReservationStatus status,
3941
Pageable pageable
4042
);
4143

4244
@Query("""
4345
SELECT r
4446
FROM Reservation r
4547
WHERE r.mentee.member = :member
48+
AND (:status IS NULL OR r.status = :status)
4649
""")
4750
Page<Reservation> findAllByMenteeMember(
4851
@Param("member") Member member,
52+
@Param("status") ReservationStatus status,
4953
Pageable pageable
5054
);
5155

back/src/main/java/com/back/domain/mentoring/reservation/service/ReservationService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public class ReservationService {
3939
private final MentoringSessionService mentoringSessionService;
4040

4141
@Transactional(readOnly = true)
42-
public Page<ReservationDto> getReservations(Member member, int page, int size) {
42+
public Page<ReservationDto> getReservations(Member member, int page, int size, ReservationStatus status) {
4343
Pageable pageable = PageRequest.of(
4444
page,
4545
size,
@@ -49,9 +49,9 @@ public Page<ReservationDto> getReservations(Member member, int page, int size) {
4949
Page<Reservation> reservations;
5050

5151
if (member.getRole() == Member.Role.MENTOR) {
52-
reservations = reservationRepository.findAllByMentorMember(member.getId(), pageable);
52+
reservations = reservationRepository.findAllByMentorMember(member.getId(), status, pageable);
5353
} else {
54-
reservations = reservationRepository.findAllByMenteeMember(member, pageable);
54+
reservations = reservationRepository.findAllByMenteeMember(member, status, pageable);
5555
}
5656
return reservations.map(ReservationDto::from);
5757
}

back/src/test/java/com/back/domain/mentoring/reservation/service/ReservationServiceTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,14 +101,16 @@ void getReservations() {
101101

102102
when(reservationRepository.findAllByMentorMember(
103103
eq(mentor.getMember().getId()),
104+
isNull(),
104105
any(Pageable.class)
105106
)).thenReturn(reservationPage);
106107

107108
// when
108109
Page<ReservationDto> result = reservationService.getReservations(
109110
mentor.getMember(),
110111
page,
111-
size
112+
size,
113+
null
112114
);
113115

114116
// then
@@ -118,6 +120,7 @@ void getReservations() {
118120
assertThat(result.getTotalPages()).isEqualTo(2);
119121
verify(reservationRepository).findAllByMentorMember(
120122
eq(mentor.getMember().getId()),
123+
isNull(),
121124
any(Pageable.class)
122125
);
123126
}

0 commit comments

Comments
 (0)