diff --git a/back/src/main/java/com/back/domain/mentoring/mentoring/controller/MentoringController.java b/back/src/main/java/com/back/domain/mentoring/mentoring/controller/MentoringController.java index 3c72bdad..3bd0964d 100644 --- a/back/src/main/java/com/back/domain/mentoring/mentoring/controller/MentoringController.java +++ b/back/src/main/java/com/back/domain/mentoring/mentoring/controller/MentoringController.java @@ -17,6 +17,8 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/mentorings") @RequiredArgsConstructor @@ -43,6 +45,20 @@ public RsData getMentorings( ); } + @GetMapping("/my") + @PreAuthorize("hasRole('MENTOR')") + @Operation(summary = "나의 멘토링 목록 조회", description = "나의 멘토링 목록을 조회합니다. 로그인한 멘토만 접근할 수 있습니다.") + public RsData> getMyMentorings() { + Mentor mentor = memberStorage.findMentorByMember(rq.getActor()); + List resDto = mentoringService.getMyMentorings(mentor); + + return new RsData<>( + "200", + "나의 멘토링 목록을 조회하였습니다.", + resDto + ); + } + @GetMapping("/{mentoringId}") @Operation(summary = "멘토링 상세 조회", description = "특정 멘토링을 상세 조회합니다.") public RsData getMentoring( diff --git a/back/src/main/java/com/back/domain/mentoring/mentoring/repository/MentoringRepository.java b/back/src/main/java/com/back/domain/mentoring/mentoring/repository/MentoringRepository.java index bc4d2a7a..13424f69 100644 --- a/back/src/main/java/com/back/domain/mentoring/mentoring/repository/MentoringRepository.java +++ b/back/src/main/java/com/back/domain/mentoring/mentoring/repository/MentoringRepository.java @@ -8,6 +8,7 @@ public interface MentoringRepository extends JpaRepository, MentoringRepositoryCustom { List findByMentorId(Long mentorId); + List findByMentorIdOrderByIdDesc(Long mentorId); Optional findTopByOrderByIdDesc(); boolean existsByMentorIdAndTitle(Long mentorId, String title); boolean existsByMentorIdAndTitleAndIdNot(Long mentorId, String title, Long MentoringId); diff --git a/back/src/main/java/com/back/domain/mentoring/mentoring/service/MentoringService.java b/back/src/main/java/com/back/domain/mentoring/mentoring/service/MentoringService.java index 7a5a4984..545a00d0 100644 --- a/back/src/main/java/com/back/domain/mentoring/mentoring/service/MentoringService.java +++ b/back/src/main/java/com/back/domain/mentoring/mentoring/service/MentoringService.java @@ -39,6 +39,14 @@ public Page getMentorings(String keyword, int page, int si .map(MentoringWithTagsDto::from); } + @Transactional(readOnly = true) + public List getMyMentorings(Mentor mentor) { + return mentoringRepository.findByMentorIdOrderByIdDesc(mentor.getId()) + .stream() + .map(MentoringWithTagsDto::from) + .toList(); + } + @Transactional(readOnly = true) public MentoringResponse getMentoring(Long mentoringId) { Mentoring mentoring = mentoringStorage.findMentoring(mentoringId); diff --git a/back/src/test/java/com/back/domain/mentoring/mentoring/service/MentoringServiceTest.java b/back/src/test/java/com/back/domain/mentoring/mentoring/service/MentoringServiceTest.java index fbde5117..c416080f 100644 --- a/back/src/test/java/com/back/domain/mentoring/mentoring/service/MentoringServiceTest.java +++ b/back/src/test/java/com/back/domain/mentoring/mentoring/service/MentoringServiceTest.java @@ -143,6 +143,25 @@ void returnEmptyPage() { } } + @Test + @DisplayName("나의 멘토링 목록 조회") + void getMentorings() { + // given + Mentoring mentoring2 = MentoringFixture.create(2L, mentor2); + + List mentorings = List.of(mentoring1); + + when(mentoringRepository.findByMentorIdOrderByIdDesc(mentor1.getId())) + .thenReturn(mentorings); + + // when + List result = mentoringService.getMyMentorings(mentor1); + + // then + assertThat(result).hasSize(1); + verify(mentoringRepository).findByMentorIdOrderByIdDesc(mentor1.getId()); + } + @Nested @DisplayName("멘토링 조회") class Describe_getMentoring {