From 24e217e8ee11e8b96321fecc995a846581854fdb Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 27 Jun 2026 05:11:22 +0900 Subject: [PATCH] =?UTF-8?q?fix(recommendation):=20=EC=B6=94=EC=B2=9C=20sna?= =?UTF-8?q?pshot=20offset=20=EB=B2=94=EC=9C=84=EB=A5=BC=20=ED=99=95?= =?UTF-8?q?=EC=9E=A5=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...RecommendationSnapshotPersistenceAdapter.kt | 2 +- .../RecommendationSnapshotRepository.kt | 2 +- .../HomeRecommendationQueryService.kt | 8 ++++---- .../port/out/RecommendationSnapshotPort.kt | 2 +- .../HomeRecommendationQueryServiceTest.kt | 18 +++++++++--------- ...RecommendationSnapshotRefreshServiceTest.kt | 6 +++--- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/RecommendationSnapshotPersistenceAdapter.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/RecommendationSnapshotPersistenceAdapter.kt index d4d9fdcd..ac9082e3 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/RecommendationSnapshotPersistenceAdapter.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/RecommendationSnapshotPersistenceAdapter.kt @@ -12,7 +12,7 @@ class RecommendationSnapshotPersistenceAdapter( ) : RecommendationSnapshotPort { override fun findLatestSnapshots( sectionType: RecommendedSectionType, - offset: Int, + offset: Long, limit: Int ): List { return repository.findLatestSnapshots(sectionType.name, offset, limit).map { it.toRecord() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/RecommendationSnapshotRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/RecommendationSnapshotRepository.kt index 34cdfb24..fb8914f6 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/RecommendationSnapshotRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/adapter/out/persistence/RecommendationSnapshotRepository.kt @@ -24,7 +24,7 @@ interface RecommendationSnapshotRepository : JpaRepository diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryService.kt index bb8527da..1e77c354 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryService.kt @@ -24,7 +24,7 @@ class HomeRecommendationQueryService( private val snapshotPort: RecommendationSnapshotPort ) { fun findLiveRecommendations( - offset: Int = 0, + offset: Long = 0, limit: Int = DEFAULT_LIVE_LIMIT, memberId: Long? = null, includeAdultLives: Boolean = false @@ -49,7 +49,7 @@ class HomeRecommendationQueryService( fun findRecentDebutCreators( now: LocalDateTime, - offset: Int = 0, + offset: Long = 0, limit: Int = DEFAULT_RECENT_DEBUT_CREATOR_LIMIT, memberId: Long? = null, includeAdultContents: Boolean = false @@ -59,7 +59,7 @@ class HomeRecommendationQueryService( fun findFirstAudioContents( now: LocalDateTime, - offset: Int = 0, + offset: Long = 0, limit: Int = DEFAULT_FIRST_AUDIO_CONTENT_LIMIT, memberId: Long? = null, includeAdultContents: Boolean = false @@ -68,7 +68,7 @@ class HomeRecommendationQueryService( } fun findAiCharacterRecommendations( - offset: Int = 0, + offset: Long = 0, limit: Int = DEFAULT_AI_CHARACTER_LIMIT ): List { val snapshots = snapshotPort.findLatestSnapshots(RecommendedSectionType.AI_CHARACTER, offset, limit) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/port/out/RecommendationSnapshotPort.kt b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/port/out/RecommendationSnapshotPort.kt index 65c4a72a..77f873f7 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/port/out/RecommendationSnapshotPort.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/v2/recommendation/port/out/RecommendationSnapshotPort.kt @@ -6,7 +6,7 @@ import java.time.LocalDateTime interface RecommendationSnapshotPort { fun findLatestSnapshots( sectionType: RecommendedSectionType, - offset: Int = 0, + offset: Long = 0, limit: Int = Int.MAX_VALUE ): List diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryServiceTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryServiceTest.kt index 10da843e..7b3434dc 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryServiceTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/HomeRecommendationQueryServiceTest.kt @@ -615,7 +615,7 @@ class HomeRecommendationQueryServiceTest { private class FakeHomeRecommendationQueryPort : HomeRecommendationQueryPort { var liveLimit: Int? = null - var liveOffset: Int? = null + var liveOffset: Long? = null var liveMemberId: Long? = null var liveIncludeAdultLives: Boolean? = null var bannerLimit: Int? = null @@ -625,12 +625,12 @@ class HomeRecommendationQueryServiceTest { var activeCreatorIncludeAdultActivities: Boolean? = null var recentDebutNow: LocalDateTime? = null var recentDebutLimit: Int? = null - var recentDebutOffset: Int? = null + var recentDebutOffset: Long? = null var recentDebutMemberId: Long? = null var recentDebutIncludeAdultContents: Boolean? = null var firstAudioNow: LocalDateTime? = null var firstAudioLimit: Int? = null - var firstAudioOffset: Int? = null + var firstAudioOffset: Long? = null var firstAudioMemberId: Long? = null var firstAudioIncludeAdultContents: Boolean? = null var aiCharacterDetailIds: List = emptyList() @@ -699,7 +699,7 @@ class HomeRecommendationQueryServiceTest { var genreCreatorRecommendations: List = emptyList() override fun findLiveRecommendations( - offset: Int, + offset: Long, limit: Int, memberId: Long?, includeAdultLives: Boolean @@ -730,7 +730,7 @@ class HomeRecommendationQueryServiceTest { override fun findRecentDebutCreators( now: LocalDateTime, - offset: Int, + offset: Long, limit: Int, memberId: Long?, includeAdultContents: Boolean @@ -745,7 +745,7 @@ class HomeRecommendationQueryServiceTest { override fun findFirstAudioContents( now: LocalDateTime, - offset: Int, + offset: Long, limit: Int, memberId: Long?, includeAdultContents: Boolean @@ -821,7 +821,7 @@ private class FakeHomeRecommendationSnapshotPort : RecommendationSnapshotPort { override fun findLatestSnapshots( sectionType: RecommendedSectionType, - offset: Int, + offset: Long, limit: Int ): List { val latestSnapshotAt = snapshots @@ -832,8 +832,8 @@ private class FakeHomeRecommendationSnapshotPort : RecommendationSnapshotPort { .filter { it.sectionType == sectionType && it.snapshotAt == latestSnapshotAt } .sortedWith(compareByDescending { it.score }.thenBy { it.randomTieBreaker }) - if (offset == 0 && limit == Int.MAX_VALUE) return all - return all.drop(offset).take(limit) + if (offset == 0L && limit == Int.MAX_VALUE) return all + return all.drop(offset.toInt()).take(limit) } override fun replaceSnapshots( diff --git a/src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/RecommendationSnapshotRefreshServiceTest.kt b/src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/RecommendationSnapshotRefreshServiceTest.kt index ca4fb7a5..b90c26e3 100644 --- a/src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/RecommendationSnapshotRefreshServiceTest.kt +++ b/src/test/kotlin/kr/co/vividnext/sodalive/v2/recommendation/application/RecommendationSnapshotRefreshServiceTest.kt @@ -256,7 +256,7 @@ private class FakeRecommendationSnapshotPort : RecommendationSnapshotPort { override fun findLatestSnapshots( sectionType: RecommendedSectionType, - offset: Int, + offset: Long, limit: Int ): List { val latestSnapshotAt = snapshots @@ -267,8 +267,8 @@ private class FakeRecommendationSnapshotPort : RecommendationSnapshotPort { .filter { it.sectionType == sectionType && it.snapshotAt == latestSnapshotAt } .sortedWith(compareByDescending { it.score }.thenBy { it.randomTieBreaker }) - if (offset == 0 && limit == Int.MAX_VALUE) return all - return all.drop(offset).take(limit) + if (offset == 0L && limit == Int.MAX_VALUE) return all + return all.drop(offset.toInt()).take(limit) } override fun replaceSnapshots(