From 151cc10caf2163b01df02910ecdbd0f09403b922 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 26 Sep 2023 15:59:44 +0900 Subject: [PATCH] =?UTF-8?q?=EC=83=88=EB=A1=9C=EC=9A=B4=20=EC=BD=98?= =?UTF-8?q?=ED=85=90=EC=B8=A0=20-=20=ED=8E=98=EC=9D=B4=EC=A7=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vividnext/sodalive/content/AudioContentRepository.kt | 3 +++ .../sodalive/content/main/AudioContentMainController.kt | 6 ++++-- .../sodalive/content/main/AudioContentMainService.kt | 7 +++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt index af5c5ef..a486b2f 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -52,6 +52,7 @@ interface AudioContentQueryRepository { cloudfrontHost: String, theme: String = "", isAdult: Boolean = false, + offset: Long = 0, limit: Long = 20 ): List @@ -215,6 +216,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) cloudfrontHost: String, theme: String, isAdult: Boolean, + offset: Long, limit: Long ): List { var where = audioContent.isActive.isTrue @@ -243,6 +245,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) .innerJoin(audioContent.member, member) .innerJoin(audioContent.theme, audioContentTheme) .where(where) + .offset(offset) .limit(limit) .orderBy(audioContent.createdAt.desc()) .fetch() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt index d021553..6e3e1a0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainController.kt @@ -3,6 +3,7 @@ package kr.co.vividnext.sodalive.content.main import kr.co.vividnext.sodalive.common.ApiResponse import kr.co.vividnext.sodalive.common.SodaException import kr.co.vividnext.sodalive.member.Member +import org.springframework.data.domain.Pageable import org.springframework.security.core.annotation.AuthenticationPrincipal import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping @@ -25,10 +26,11 @@ class AudioContentMainController(private val service: AudioContentMainService) { @GetMapping("/new") fun getNewContentByTheme( @RequestParam("theme") theme: String, - @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, + pageable: Pageable ) = run { if (member == null) throw SodaException("로그인 정보를 확인해주세요.") - ApiResponse.ok(service.getNewContentByTheme(theme, member)) + ApiResponse.ok(service.getNewContentByTheme(theme, member, pageable)) } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt index 0dc954e..fc5f8c1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt @@ -10,6 +10,7 @@ import kr.co.vividnext.sodalive.event.EventItem import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.block.BlockMemberRepository import org.springframework.beans.factory.annotation.Value +import org.springframework.data.domain.Pageable import org.springframework.stereotype.Service @Service @@ -135,11 +136,13 @@ class AudioContentMainService( ) } - fun getNewContentByTheme(theme: String, member: Member): List { + fun getNewContentByTheme(theme: String, member: Member, pageable: Pageable): List { return repository.findByTheme( cloudfrontHost = imageHost, theme = theme, - isAdult = member.auth != null + isAdult = member.auth != null, + offset = pageable.offset, + limit = pageable.pageSize.toLong() ) .asSequence() .filter { !blockMemberRepository.isBlocked(blockedMemberId = member.id!!, memberId = it.creatorId) }