diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt index ce1678f..8014b8b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesRepository.kt @@ -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, ContentSeriesQueryRepository @@ -15,7 +17,7 @@ interface ContentSeriesQueryRepository { isAuth: Boolean, offset: Long, limit: Long - ): List + ): List } class ContentSeriesQueryRepositoryImpl( @@ -43,7 +45,10 @@ class ContentSeriesQueryRepositoryImpl( isAuth: Boolean, offset: Long, limit: Long - ): List { + ): List { + 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() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt index ca4d840..6f08877 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/ContentSeriesService.kt @@ -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): 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}요일" - } - } }