feat(content-ranking): 오디오 랭킹 응답 계약을 추가한다

This commit is contained in:
2026-06-24 12:35:12 +09:00
parent 87c51d6087
commit c9d7399f0e
4 changed files with 122 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package kr.co.vividnext.sodalive.v2.api.content.ranking.dto
import com.fasterxml.jackson.annotation.JsonProperty
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRanking
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRankingItem
import kr.co.vividnext.sodalive.v2.content.ranking.domain.AudioRankingType
data class AudioRankingResponse(
val showRankChange: Boolean,
val type: AudioRankingType,
val items: List<AudioRankingItemResponse>
) {
companion object {
fun from(ranking: AudioRanking): AudioRankingResponse {
return AudioRankingResponse(
showRankChange = ranking.showRankChange,
type = ranking.type,
items = ranking.items.map(AudioRankingItemResponse::from)
)
}
}
}
data class AudioRankingItemResponse(
val contentId: Long,
val title: String,
val creatorNickname: String,
val rank: Int,
val rankChange: Int?,
@JsonProperty("isNew")
val isNew: Boolean,
val coverImageUrl: String?
) {
companion object {
fun from(item: AudioRankingItem): AudioRankingItemResponse {
return AudioRankingItemResponse(
contentId = item.contentId,
title = item.title,
creatorNickname = item.creatorNickname,
rank = item.rank,
rankChange = item.rankChange,
isNew = item.isNew,
coverImageUrl = item.coverImageUrl
)
}
}
}

View File

@@ -0,0 +1,17 @@
package kr.co.vividnext.sodalive.v2.content.ranking.domain
data class AudioRanking(
val showRankChange: Boolean,
val type: AudioRankingType,
val items: List<AudioRankingItem>
)
data class AudioRankingItem(
val contentId: Long,
val title: String,
val creatorNickname: String,
val rank: Int,
val rankChange: Int?,
val isNew: Boolean,
val coverImageUrl: String?
)

View File

@@ -0,0 +1,10 @@
package kr.co.vividnext.sodalive.v2.content.ranking.domain
enum class AudioRankingType {
WEEKLY_POPULAR,
RISING,
REVENUE,
SALES_COUNT,
COMMENT_COUNT,
LIKE_COUNT
}