Skip to content

Commit 54939ec

Browse files
committed
feat: 찜한 아티스트 목록 컨트롤러
1 parent e2335c0 commit 54939ec

4 files changed

Lines changed: 50 additions & 0 deletions

File tree

src/main/java/com/back/web7_9_codecrete_be/domain/artists/controller/ArtistsController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@ public RsData<List<ConcertListByArtistResponse>> concertList() {
118118
return RsData.success("찜한 아티스트 공연 리스트 조회 성공", artistService.getConcertList(user.getId()));
119119
}
120120

121+
@Operation(summary = "찜한 아티스트 리스트 생성", description = "로그인한 유저가 찜한 아티스트 목록을 반환합니다.")
122+
@GetMapping("/likes")
123+
public RsData<List<LikeArtistsResponse>> likeArtists() {
124+
User user = rq.getUser();
125+
return RsData.success("찜한 아티스트 목록 조회 성공", artistService.findLikeArtistsByUserid(user));
126+
}
127+
121128
@Operation(summary = "아티스트 찜 여부 반환", description = "아티스트 Id 를 통해 로그인한 유저가 해당 아티스트를 찜했는지 여부를 반환합니다.")
122129
@GetMapping("/likes/{artistId}")
123130
public RsData<LikeArtistResponse> isLiked(
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.back.web7_9_codecrete_be.domain.artists.dto.response;
2+
3+
import com.back.web7_9_codecrete_be.domain.artists.entity.Artist;
4+
import com.back.web7_9_codecrete_be.domain.concerts.entity.Concert;
5+
import io.swagger.v3.oas.annotations.media.Schema;
6+
7+
public record LikeArtistsResponse(
8+
@Schema(description = "아티스트 아이디입니다.")
9+
Long id,
10+
11+
@Schema(description = "아티스트 이름입니다.")
12+
String artistName,
13+
14+
@Schema(description = "한국어 기준 아티스트 이름 입니다.")
15+
String nameKo,
16+
17+
@Schema(description = "아티스트 프로필 사진 URL 입니다.")
18+
String imageUrl
19+
) {
20+
public static LikeArtistsResponse from(Artist artist) {
21+
return new LikeArtistsResponse(
22+
artist.getId(),
23+
artist.getArtistName(),
24+
artist.getNameKo(),
25+
artist.getImageUrl()
26+
);
27+
}
28+
}

src/main/java/com/back/web7_9_codecrete_be/domain/artists/repository/ArtistLikeRepository.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.back.web7_9_codecrete_be.domain.artists.repository;
22

3+
import com.back.web7_9_codecrete_be.domain.artists.dto.response.LikeArtistsResponse;
34
import com.back.web7_9_codecrete_be.domain.artists.entity.Artist;
45
import com.back.web7_9_codecrete_be.domain.artists.entity.ArtistLike;
56
import com.back.web7_9_codecrete_be.domain.users.entity.User;
@@ -23,4 +24,10 @@ public interface ArtistLikeRepository extends JpaRepository<ArtistLike, Long> {
2324
""")
2425
List<Long> findArtistIdsByUserId(@Param("userId") Long userId);
2526

27+
@Query("""
28+
select al.artist
29+
from ArtistLike al
30+
where al.user.id = :userId
31+
""")
32+
List<Artist> findLikeArtistsByUserId(@Param("userId") Long userId);
2633
}

src/main/java/com/back/web7_9_codecrete_be/domain/artists/service/ArtistService.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,4 +224,12 @@ public LikeArtistResponse findArtistLikeByUserId(Artist artist, User user) {
224224
return new LikeArtistResponse(artistLikeRepository.existsByArtistAndUser(artist, user));
225225
}
226226

227+
@Transactional(readOnly = true)
228+
public List<LikeArtistsResponse> findLikeArtistsByUserid(User user) {
229+
List<Artist> likeArtists = artistLikeRepository.findLikeArtistsByUserId(user.getId());
230+
return likeArtists.stream()
231+
.map(LikeArtistsResponse::from)
232+
.toList();
233+
}
234+
227235
}

0 commit comments

Comments
 (0)