시리즈 리스트 조회 API

- 필요한 필드만 조회하도록 수정
This commit is contained in:
Klaus 2024-04-25 03:47:29 +09:00
parent c95b3db6eb
commit c077f7322d
2 changed files with 26 additions and 43 deletions

View File

@ -1,8 +1,10 @@
package kr.co.vividnext.sodalive.content.series
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.admin.content.series.genre.QSeriesGenre
import kr.co.vividnext.sodalive.creator.admin.content.series.QSeries.series
import kr.co.vividnext.sodalive.creator.admin.content.series.Series
import kr.co.vividnext.sodalive.member.QMember
import org.springframework.data.jpa.repository.JpaRepository
interface ContentSeriesRepository : JpaRepository<Series, Long>, ContentSeriesQueryRepository
@ -15,7 +17,7 @@ interface ContentSeriesQueryRepository {
isAuth: Boolean,
offset: Long,
limit: Long
): List<Series>
): List<GetSeriesListRawItem>
}
class ContentSeriesQueryRepositoryImpl(
@ -43,7 +45,10 @@ class ContentSeriesQueryRepositoryImpl(
isAuth: Boolean,
offset: Long,
limit: Long
): List<Series> {
): List<GetSeriesListRawItem> {
val qMember = QMember.member
val qSeriesGenre = QSeriesGenre.seriesGenre
var where = series.member.id.eq(creatorId)
.and(series.isActive.isTrue)
@ -52,7 +57,23 @@ class ContentSeriesQueryRepositoryImpl(
}
return queryFactory
.selectFrom(series)
.select(
QGetSeriesListRawItem(
series.id,
series.title,
series.coverImage.prepend("/").prepend(imageHost),
series.publishedDaysOfWeek,
series.state,
qSeriesGenre.genre,
series.isAdult,
qMember.id,
qMember.nickname,
qMember.profileImage.prepend("/").prepend(imageHost)
)
)
.from(series)
.innerJoin(series.member, qMember)
.innerJoin(series.genre, qSeriesGenre)
.where(where)
.fetch()
}

View File

@ -1,9 +1,7 @@
package kr.co.vividnext.sodalive.content.series
import kr.co.vividnext.sodalive.content.series.content.ContentSeriesContentRepository
import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesPublishedDaysOfWeek
import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesSortType
import kr.co.vividnext.sodalive.creator.admin.content.series.SeriesState
import kr.co.vividnext.sodalive.member.Member
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
@ -34,24 +32,11 @@ class ContentSeriesService(
)
val items = rawItems
.map {
GetSeriesListResponse.SeriesListItem(
seriesId = it.id!!,
title = it.title,
coverImage = "$coverImageHost/${it.coverImage!!}",
publishedDaysOfWeek = publishedDaysOfWeekText(it.publishedDaysOfWeek),
isComplete = it.state == SeriesState.COMPLETE,
creator = GetSeriesListResponse.SeriesListItemCreator(
creatorId = it.member!!.id!!,
nickname = it.member!!.nickname,
profileImage = "$coverImageHost/${it.member!!.profileImage!!}"
)
)
}
.map { it.toSeriesListItem() }
.map {
it.numberOfContent = seriesContentRepository.getContentCount(
seriesId = it.seriesId,
isAdult = member.auth == null
isAdult = member.auth != null
)
it
@ -71,27 +56,4 @@ class ContentSeriesService(
return GetSeriesListResponse(totalCount, items)
}
private fun publishedDaysOfWeekText(publishedDaysOfWeek: Set<SeriesPublishedDaysOfWeek>): String {
val dayOfWeekText = publishedDaysOfWeek.toList().sortedBy { it.ordinal }
.map {
when (it) {
SeriesPublishedDaysOfWeek.SUN -> ""
SeriesPublishedDaysOfWeek.MON -> ""
SeriesPublishedDaysOfWeek.TUE -> ""
SeriesPublishedDaysOfWeek.WED -> ""
SeriesPublishedDaysOfWeek.THU -> ""
SeriesPublishedDaysOfWeek.FRI -> ""
SeriesPublishedDaysOfWeek.SAT -> ""
SeriesPublishedDaysOfWeek.RANDOM -> "랜덤"
}
}
.joinToString(", ") { it }
return if (publishedDaysOfWeek.contains(SeriesPublishedDaysOfWeek.RANDOM)) {
dayOfWeekText
} else {
"매주 ${dayOfWeekText}요일"
}
}
}