diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt index 9dc6f7c..0d25be8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/AdminAdMediaPartnerService.kt @@ -50,8 +50,9 @@ class AdminAdMediaPartnerService(private val repository: AdMediaPartnerRepositor } } - fun getMediaPartnerList(offset: Long, limit: Long): List { - return repository.getMediaPartnerList(offset, limit) + fun getMediaPartnerList(offset: Long, limit: Long): GetAdminAdMediaPartnerResponse { + val totalCount = repository.getMediaPartnerListTotalCount() + val items = repository.getMediaPartnerList(offset, limit) .map { val deepLinkValue = when (it.type) { AdMediaPartnerType.SERIES -> "series" @@ -77,6 +78,11 @@ class AdminAdMediaPartnerService(private val repository: AdMediaPartnerRepositor it.link = link it } + + return GetAdminAdMediaPartnerResponse( + totalCount = totalCount, + items = items + ) } companion object { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/GetAdminAdMediaPartnerResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/GetAdminAdMediaPartnerResponse.kt index 14e0b6d..5b0bd18 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/GetAdminAdMediaPartnerResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/marketing/GetAdminAdMediaPartnerResponse.kt @@ -3,7 +3,12 @@ package kr.co.vividnext.sodalive.admin.marketing import com.querydsl.core.annotations.QueryProjection import kr.co.vividnext.sodalive.marketing.AdMediaPartnerType -data class GetAdminAdMediaPartnerResponse @QueryProjection constructor( +data class GetAdminAdMediaPartnerResponse( + val totalCount: Int, + val items: List +) + +data class GetAdminAdMediaPartnerResponseItem @QueryProjection constructor( val id: Long, val mediaGroup: String, val pid: String, diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartnerRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartnerRepository.kt index 1970387..2886fbc 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartnerRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/marketing/AdMediaPartnerRepository.kt @@ -4,8 +4,8 @@ import com.querydsl.core.types.dsl.DateTimePath import com.querydsl.core.types.dsl.Expressions import com.querydsl.core.types.dsl.StringTemplate import com.querydsl.jpa.impl.JPAQueryFactory -import kr.co.vividnext.sodalive.admin.marketing.GetAdminAdMediaPartnerResponse -import kr.co.vividnext.sodalive.admin.marketing.QGetAdminAdMediaPartnerResponse +import kr.co.vividnext.sodalive.admin.marketing.GetAdminAdMediaPartnerResponseItem +import kr.co.vividnext.sodalive.admin.marketing.QGetAdminAdMediaPartnerResponseItem import kr.co.vividnext.sodalive.marketing.QAdMediaPartner.adMediaPartner import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @@ -15,7 +15,8 @@ interface AdMediaPartnerRepository : JpaRepository, AdMedi interface AdMediaPartnerQueryRepository { fun findByPid(pid: String): AdMediaPartner? - fun getMediaPartnerList(offset: Long, limit: Long): List + fun getMediaPartnerList(offset: Long, limit: Long): List + fun getMediaPartnerListTotalCount(): Int } @Repository @@ -27,10 +28,10 @@ class AdMediaPartnerQueryRepositoryImpl(private val queryFactory: JPAQueryFactor .fetchFirst() } - override fun getMediaPartnerList(offset: Long, limit: Long): List { + override fun getMediaPartnerList(offset: Long, limit: Long): List { return queryFactory .select( - QGetAdminAdMediaPartnerResponse( + QGetAdminAdMediaPartnerResponseItem( adMediaPartner.id, adMediaPartner.mediaGroup, adMediaPartner.pid, @@ -50,6 +51,14 @@ class AdMediaPartnerQueryRepositoryImpl(private val queryFactory: JPAQueryFactor .fetch() } + override fun getMediaPartnerListTotalCount(): Int { + return queryFactory + .select(adMediaPartner.id) + .from(adMediaPartner) + .fetch() + .size + } + private fun getFormattedDate(dateTimePath: DateTimePath): StringTemplate { return Expressions.stringTemplate( "DATE_FORMAT({0}, {1})",