플레이 리스트 수정 API 추가
This commit is contained in:
parent
10a65294ce
commit
d6e5a45be9
|
@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.DeleteMapping
|
||||||
import org.springframework.web.bind.annotation.GetMapping
|
import org.springframework.web.bind.annotation.GetMapping
|
||||||
import org.springframework.web.bind.annotation.PathVariable
|
import org.springframework.web.bind.annotation.PathVariable
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
import org.springframework.web.bind.annotation.PostMapping
|
||||||
|
import org.springframework.web.bind.annotation.PutMapping
|
||||||
import org.springframework.web.bind.annotation.RequestBody
|
import org.springframework.web.bind.annotation.RequestBody
|
||||||
import org.springframework.web.bind.annotation.RequestMapping
|
import org.springframework.web.bind.annotation.RequestMapping
|
||||||
import org.springframework.web.bind.annotation.RestController
|
import org.springframework.web.bind.annotation.RestController
|
||||||
|
@ -22,9 +23,18 @@ class AudioContentPlaylistController(private val service: AudioContentPlaylistSe
|
||||||
) = run {
|
) = run {
|
||||||
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
ApiResponse.ok(
|
ApiResponse.ok(service.createPlaylist(request, member))
|
||||||
service.createPlaylist(request, member)
|
}
|
||||||
)
|
|
||||||
|
@PutMapping("/{id}")
|
||||||
|
fun updatePlaylist(
|
||||||
|
@PathVariable id: Long,
|
||||||
|
@RequestBody request: UpdatePlaylistRequest,
|
||||||
|
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
|
||||||
|
) = run {
|
||||||
|
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
|
||||||
|
|
||||||
|
ApiResponse.ok(service.updatePlaylist(playlistId = id, request = request, member = member))
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
|
|
|
@ -52,6 +52,32 @@ class AudioContentPlaylistService(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun updatePlaylist(playlistId: Long, request: UpdatePlaylistRequest, member: Member) {
|
||||||
|
if (request.contentIdList.size >= 30) {
|
||||||
|
throw SodaException("플레이 리스트에는 최대 30개의 콘텐츠를 저장할 수 있습니다.")
|
||||||
|
}
|
||||||
|
|
||||||
|
val playlist = redisRepository.findByIdOrNull(id = playlistId)
|
||||||
|
?: throw SodaException("잘못된 요청입니다.")
|
||||||
|
|
||||||
|
if (playlist.memberId != member.id) {
|
||||||
|
throw SodaException("잘못된 요청입니다.")
|
||||||
|
}
|
||||||
|
|
||||||
|
checkOrderedContent(
|
||||||
|
contentIdList = request.contentIdList,
|
||||||
|
memberId = member.id!!
|
||||||
|
)
|
||||||
|
|
||||||
|
val updatePlaylist = playlist.copy(
|
||||||
|
title = request.title ?: playlist.title,
|
||||||
|
desc = request.desc ?: playlist.desc,
|
||||||
|
contentIdList = request.contentIdList
|
||||||
|
)
|
||||||
|
|
||||||
|
redisRepository.save(updatePlaylist)
|
||||||
|
}
|
||||||
|
|
||||||
fun getPlaylists(member: Member): GetPlaylistsResponse {
|
fun getPlaylists(member: Member): GetPlaylistsResponse {
|
||||||
val playlists = redisRepository.findByMemberId(memberId = member.id!!)
|
val playlists = redisRepository.findByMemberId(memberId = member.id!!)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package kr.co.vividnext.sodalive.content.playlist
|
||||||
|
|
||||||
|
data class UpdatePlaylistRequest(
|
||||||
|
val title: String? = null,
|
||||||
|
val desc: String? = null,
|
||||||
|
val contentIdList: List<Long> = emptyList()
|
||||||
|
)
|
Loading…
Reference in New Issue