diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/character/dto/ChatCharacterSearchResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/character/dto/ChatCharacterSearchResponse.kt index e4e06ad..4678747 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/character/dto/ChatCharacterSearchResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/character/dto/ChatCharacterSearchResponse.kt @@ -1,7 +1,6 @@ package kr.co.vividnext.sodalive.admin.chat.character.dto import kr.co.vividnext.sodalive.chat.character.ChatCharacter -import org.springframework.data.domain.Page /** * 캐릭터 검색 결과 응답 DTO @@ -27,9 +26,5 @@ data class ChatCharacterSearchResponse( tags = tags ) } - - fun fromPage(characters: Page, imageHost: String): Page { - return characters.map { from(it, imageHost) } - } } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/dto/ChatCharacterBannerResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/dto/ChatCharacterBannerResponse.kt index 05012b7..4afd07b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/dto/ChatCharacterBannerResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/chat/dto/ChatCharacterBannerResponse.kt @@ -1,7 +1,6 @@ package kr.co.vividnext.sodalive.admin.chat.dto import kr.co.vividnext.sodalive.chat.character.ChatCharacterBanner -import org.springframework.data.domain.Page /** * 캐릭터 배너 응답 DTO @@ -21,10 +20,6 @@ data class ChatCharacterBannerResponse( characterName = banner.chatCharacter.name ) } - - fun fromPage(banners: Page, imageHost: String): Page { - return banners.map { from(it, imageHost) } - } } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/repository/ChatCharacterBannerRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/repository/ChatCharacterBannerRepository.kt index b849c7e..0f3d403 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/repository/ChatCharacterBannerRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/repository/ChatCharacterBannerRepository.kt @@ -1,43 +1,13 @@ package kr.co.vividnext.sodalive.chat.character.repository -import kr.co.vividnext.sodalive.chat.character.ChatCharacter import kr.co.vividnext.sodalive.chat.character.ChatCharacterBanner 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 @Repository interface ChatCharacterBannerRepository : JpaRepository { // 활성화된 배너 목록 조회 - fun findByIsActiveTrue(pageable: Pageable): Page - - // 특정 캐릭터의 활성화된 배너 목록 조회 - fun findByChatCharacterAndIsActiveTrue(chatCharacter: ChatCharacter): List - - // 특정 캐릭터 ID의 활성화된 배너 목록 조회 - fun findByChatCharacter_IdAndIsActiveTrue(characterId: Long): List - - // 이름, 설명, MBTI, 태그로 캐릭터 검색 (배너 포함) - @Query( - """ - SELECT DISTINCT b FROM ChatCharacterBanner b - JOIN FETCH b.chatCharacter c - LEFT JOIN c.tagMappings tm - LEFT JOIN tm.tag t - WHERE b.isActive = true AND c.isActive = true AND - ( - LOWER(c.name) LIKE LOWER(CONCAT('%', :searchTerm, '%')) OR - LOWER(c.description) LIKE LOWER(CONCAT('%', :searchTerm, '%')) OR - (c.mbti IS NOT NULL AND LOWER(c.mbti) LIKE LOWER(CONCAT('%', :searchTerm, '%'))) OR - (t.tag IS NOT NULL AND LOWER(t.tag) LIKE LOWER(CONCAT('%', :searchTerm, '%'))) - ) - """ - ) - fun searchBannersByCharacterAttributes( - @Param("searchTerm") searchTerm: String, - pageable: Pageable - ): Page + fun findByActiveTrue(pageable: Pageable): Page } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/service/ChatCharacterBannerService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/service/ChatCharacterBannerService.kt index b9175bc..a96e7e2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/service/ChatCharacterBannerService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/chat/character/service/ChatCharacterBannerService.kt @@ -18,7 +18,7 @@ class ChatCharacterBannerService( * 활성화된 모든 배너 조회 */ fun getActiveBanners(pageable: Pageable): Page { - return bannerRepository.findByIsActiveTrue(pageable) + return bannerRepository.findByActiveTrue(pageable) } /** @@ -29,20 +29,6 @@ class ChatCharacterBannerService( .orElseThrow { SodaException("배너를 찾을 수 없습니다: $bannerId") } } - /** - * 특정 캐릭터의 활성화된 배너 목록 조회 - */ - fun getActiveBannersByCharacterId(characterId: Long): List { - return bannerRepository.findByChatCharacter_IdAndIsActiveTrue(characterId) - } - - /** - * 이름, 설명, MBTI, 태그로 캐릭터 검색 (배너 포함) - */ - fun searchBannersByCharacterAttributes(searchTerm: String, pageable: Pageable): Page { - return bannerRepository.searchBannersByCharacterAttributes(searchTerm, pageable) - } - /** * 배너 등록 */