Skip to content

Commit

Permalink
feat: #44 플레이리스트에 트랙 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
dgh06175 committed Sep 21, 2024
1 parent 67bf465 commit c11c131
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ public PlaylistResponse.Playlists getPlaylists(Member member, int page, int size
// TODO: 효율 개선
List<Playlist> playlists = playlistRepository.findAllByMember(member, pageable).getContent();
List<PlaylistResponse.Playlists.PlaylistInfo> playlistInfos = playlists.stream().map(playlist -> {
// TODO: playlist.getPlaylistTracks 를 가져오기
List<PlaylistTrack> playlistTracks = playlistTrackRepository.findAllByPlaylistIs(playlist);
return playlistMapper.toPlaylistInfo(playlist, playlistTracks);
}).toList();
Expand All @@ -77,6 +78,7 @@ public PlaylistResponse.Playlists getSearchedPlaylists(Member member, String tit

List<Playlist> playlists = playlistRepository.findAllByMemberAndTitleContaining(member, title, pageable).getContent();
List<PlaylistResponse.Playlists.PlaylistInfo> playlistInfos = playlists.stream().map(playlist -> {
// TODO: playlist.getPlaylistTracks 를 가져오기
List<PlaylistTrack> playlistTracks = playlistTrackRepository.findAllByPlaylistIs(playlist);
return playlistMapper.toPlaylistInfo(playlist, playlistTracks);
}).toList();
Expand All @@ -96,6 +98,7 @@ public PlaylistResponse.PlayListId deletePlaylist(Member member, Long playlistId
@Override
public PlaylistResponse.PlaylistDetail getPlaylistDetail(Member member, Long playlistId) {
Playlist playlist = findPlaylistById(playlistId);
// TODO: playlist.getPlaylistTracks 를 가져오기
List<PlaylistTrack> playlistTracks = playlistTrackRepository.findAllByPlaylistIs(playlist);
List<PlaylistResponse.TrackDetailOrder> trackDetailOrders = playlistTracks.stream()
.map(playlistTrack -> {
Expand All @@ -108,12 +111,32 @@ public PlaylistResponse.PlaylistDetail getPlaylistDetail(Member member, Long pla

@Override
public PlaylistResponse.PlayListId updatePlaylist(Member member, Long playlistId, PlaylistRequest.PlaylistUpload playlistUpload) {
return null;
Playlist playlist = findPlaylistById(playlistId);
if (!playlist.getMember().equals(member)) {
throw new RestApiException(PlaylistErrorCode.PLAYLIST_UPDATE_FORBIDDEN);
}
// TODO: 플레이리스트 업데이트
return playlistMapper.toPlaylistId(playlistId);
}

@Override
public PlaylistResponse.PlayListId addTrackToPlaylist(Member member, Long playlistId, PlaylistRequest.TrackId trackId) {
return null;
Playlist playlist = findPlaylistById(playlistId);
Track track = findTrackById(trackId.getTrackId());
if (!playlist.getMember().equals(member)) {
throw new RestApiException(PlaylistErrorCode.PLAYLIST_UPDATE_FORBIDDEN);
}

// TODO: playlist.getPlaylistTracks 를 가져와서 orderIndex 계산
List<PlaylistTrack> playlistTracks = playlistTrackRepository.findAllByPlaylistIs(playlist);
int nextOrderIndex = playlistTracks.isEmpty() ? 0 : playlistTracks.stream()
.mapToInt(PlaylistTrack::getOrderIndex)
.max()
.orElse(0) + 1;

PlaylistTrack playlistTrack = playlistMapper.toPlaylistTrack(playlist, track, nextOrderIndex);
playlistTrackRepository.save(playlistTrack);
return playlistMapper.toPlaylistId(playlistId);
}

private Track findTrackById(Long trackId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
public enum PlaylistErrorCode implements ErrorCodeInterface{
PLAYLIST_NOT_FOUND("PLAYLIST001", "Playlist가 존재하지 않습니다.", HttpStatus.NOT_FOUND),
PLAYLIST_DELETE_FORBIDDEN("PLAYLIST002", "이 플레이리스트를 삭제할 권한이 없습니다.", HttpStatus.FORBIDDEN),
PLAYLIST_TRACK_NOT_FOUND("PLAYLIST003", "플레이리스트에 해당 트랙이 존재하지 않습니다.", HttpStatus.NOT_FOUND),
PLAYLIST_TRACK_DELETE_FORBIDDEN("PLAYLIST004", "이 플레이리스트의 트랙을 삭제할 권한이 없습니다.", HttpStatus.FORBIDDEN),
PLAYLIST_UPDATE_FORBIDDEN("PLAYLIST003", "이 플레이리스트를 업데이트할 권한이 없습니다.", HttpStatus.FORBIDDEN),
PLAYLIST_TRACK_NOT_FOUND("PLAYLIST004", "플레이리스트에 해당 트랙이 존재하지 않습니다.", HttpStatus.NOT_FOUND),
PLAYLIST_TRACK_DELETE_FORBIDDEN("PLAYLIST005", "이 플레이리스트의 트랙을 삭제할 권한이 없습니다.", HttpStatus.FORBIDDEN),
;

private final String code;
Expand Down

0 comments on commit c11c131

Please sign in to comment.