From e4c1cf5a9a1b6ea4bb8f7b1c04a605c7ff9ddaf0 Mon Sep 17 00:00:00 2001 From: Klaus Date: Thu, 13 Nov 2025 22:41:20 +0900 Subject: [PATCH] =?UTF-8?q?feat(repo):=20=EC=B5=9C=EA=B7=BC=203=EC=9D=BC?= =?UTF-8?q?=20=EB=82=B4=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=B3=B4=EC=9C=A0?= =?UTF-8?q?=20=EC=BA=90=EB=A6=AD=ED=84=B0=20id=20=EC=9D=BC=EA=B4=84=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EC=BF=BC=EB=A6=AC=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?-=20=EB=82=B4=EC=9A=A9:=20`findCharacterIdsWithRecentImages(cha?= =?UTF-8?q?racterIds,=20since)`=20=EC=B6=94=EA=B0=80=20-=20=EB=B3=B8?= =?UTF-8?q?=EB=AC=B8:=20=EC=99=9C(=EC=9D=B4=EC=9C=A0)=20=E2=80=93=20N+1=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0,=20=EB=AC=B4=EC=97=87=20=E2=80=93=20IN=20?= =?UTF-8?q?=EA=B8=B0=EB=B0=98=20=EB=B2=8C=ED=81=AC=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../character/image/CharacterImageRepository.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/image/CharacterImageRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/image/CharacterImageRepository.kt index f23c7e8..cb4a5d8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/image/CharacterImageRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/image/CharacterImageRepository.kt @@ -8,7 +8,9 @@ import org.springframework.data.domain.Page import org.springframework.data.domain.Pageable import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.Query +import org.springframework.data.repository.query.Param import org.springframework.stereotype.Repository +import java.time.LocalDateTime @Repository interface CharacterImageRepository : JpaRepository, CharacterImageQueryRepository { @@ -26,6 +28,21 @@ interface CharacterImageRepository : JpaRepository, Charac "WHERE ci.chatCharacter.id = :characterId AND ci.isActive = true" ) fun findMaxSortOrderByCharacterId(characterId: Long): Int + + @Query( + """ + select distinct c.id + from CharacterImage ci + join ci.chatCharacter c + where ci.isActive = true + and ci.createdAt >= :since + and c.id in :characterIds + """ + ) + fun findCharacterIdsWithRecentImages( + @Param("characterIds") characterIds: List, + @Param("since") since: LocalDateTime + ): List } interface CharacterImageQueryRepository {