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 {