feat(home): 홈 추천 통합 응답 DTO를 추가한다
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package kr.co.vividnext.sodalive.v2.api.home.dto
|
||||
|
||||
data class HomeRecommendationPageResponse<T>(
|
||||
val items: List<T>,
|
||||
val page: Int,
|
||||
val size: Int,
|
||||
val hasNext: Boolean
|
||||
)
|
||||
@@ -0,0 +1,100 @@
|
||||
package kr.co.vividnext.sodalive.v2.api.home.dto
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneId
|
||||
import java.time.ZoneOffset
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
private val KST_ZONE: ZoneId = ZoneId.of("Asia/Seoul")
|
||||
|
||||
internal fun LocalDateTime.toUtcIso(): String {
|
||||
val instant = this.atZone(KST_ZONE).withZoneSameInstant(ZoneOffset.UTC).toInstant()
|
||||
return DateTimeFormatter.ISO_INSTANT.format(instant)
|
||||
}
|
||||
|
||||
internal fun imageUrl(cloudFrontHost: String, path: String?): String? {
|
||||
return if (path.isNullOrBlank()) null else "$cloudFrontHost/$path"
|
||||
}
|
||||
|
||||
data class HomeRecommendationResponse(
|
||||
val lives: List<HomeLiveItem>,
|
||||
val banners: List<HomeBannerItem>,
|
||||
val recentlyActiveCreators: List<HomeActiveCreatorItem>,
|
||||
val recentDebutCreators: List<HomeCreatorItem>,
|
||||
val firstAudioContents: List<HomeFirstAudioContentItem>,
|
||||
val aiCharacters: List<HomeAiCharacterItem>,
|
||||
val genreCreators: List<HomeGenreCreatorGroupItem>,
|
||||
val cheerCreators: List<HomeCreatorItem>,
|
||||
val popularCommunities: List<HomePopularCommunityItem>
|
||||
)
|
||||
|
||||
data class HomeLiveItem(
|
||||
val liveRoomId: Long,
|
||||
val creatorId: Long,
|
||||
val creatorNickname: String,
|
||||
val creatorProfileImage: String?,
|
||||
val title: String,
|
||||
val coverImage: String?,
|
||||
val beginDateTime: String,
|
||||
val channelName: String
|
||||
)
|
||||
|
||||
data class HomeBannerItem(
|
||||
val bannerId: Long,
|
||||
val type: String,
|
||||
val thumbnailImage: String?,
|
||||
val eventId: Long?,
|
||||
val creatorId: Long?,
|
||||
val seriesId: Long?,
|
||||
val link: String?
|
||||
)
|
||||
|
||||
data class HomeActiveCreatorItem(
|
||||
val creatorId: Long,
|
||||
val creatorNickname: String,
|
||||
val creatorProfileImage: String?,
|
||||
val activityType: String,
|
||||
val activityAt: String,
|
||||
val targetId: Long?
|
||||
)
|
||||
|
||||
data class HomeCreatorItem(
|
||||
val creatorId: Long,
|
||||
val creatorNickname: String,
|
||||
val creatorProfileImage: String?
|
||||
)
|
||||
|
||||
data class HomeFirstAudioContentItem(
|
||||
val contentId: Long,
|
||||
val creatorId: Long,
|
||||
val creatorNickname: String,
|
||||
val creatorProfileImage: String?,
|
||||
val title: String,
|
||||
val coverImage: String?,
|
||||
val releaseDate: String
|
||||
)
|
||||
|
||||
data class HomeAiCharacterItem(
|
||||
val characterId: Long,
|
||||
val name: String,
|
||||
val description: String,
|
||||
val totalChatCount: Long,
|
||||
val originalWorkTitle: String?
|
||||
)
|
||||
|
||||
data class HomeGenreCreatorGroupItem(
|
||||
val genreId: Long,
|
||||
val genreName: String,
|
||||
val creators: List<HomeCreatorItem>
|
||||
)
|
||||
|
||||
data class HomePopularCommunityItem(
|
||||
val communityId: Long,
|
||||
val creatorId: Long,
|
||||
val creatorNickname: String,
|
||||
val creatorProfileImage: String?,
|
||||
val content: String,
|
||||
val createdAt: String,
|
||||
val likeCount: Long,
|
||||
val commentCount: Long
|
||||
)
|
||||
Reference in New Issue
Block a user