diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesController.kt index 99987e2..bc2867c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesController.kt @@ -5,6 +5,7 @@ import org.springframework.data.domain.Pageable import org.springframework.security.access.prepost.PreAuthorize import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController @RestController @@ -13,4 +14,9 @@ import org.springframework.web.bind.annotation.RestController class AdminContentSeriesController(private val service: AdminContentSeriesService) { @GetMapping fun getSeriesList(pageable: Pageable) = ApiResponse.ok(service.getSeriesList(pageable)) + + @GetMapping("/search") + fun searchSeriesList( + @RequestParam(value = "search_word") searchWord: String + ) = ApiResponse.ok(service.searchSeriesList(searchWord)) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesRepository.kt index 0bd1833..58a6259 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesRepository.kt @@ -20,6 +20,8 @@ interface AdminContentSeriesQueryRepository { offset: Long, limit: Long ): List + + fun searchSeriesList(searchWord: String): List } class AdminContentSeriesQueryRepositoryImpl( @@ -31,6 +33,7 @@ class AdminContentSeriesQueryRepositoryImpl( override fun getSeriesTotalCount(): Int { val where = series.isActive.isTrue .and(series.member.isNotNull) + .and(series.member.isActive.isTrue) return queryFactory .select(series.id) @@ -43,6 +46,7 @@ class AdminContentSeriesQueryRepositoryImpl( override fun getSeriesList(offset: Long, limit: Long): List { val where = series.isActive.isTrue .and(series.member.isNotNull) + .and(series.member.isActive.isTrue) return queryFactory .select( @@ -73,4 +77,23 @@ class AdminContentSeriesQueryRepositoryImpl( .orderBy(series.member.id.asc(), series.orders.asc()) .fetch() } + + override fun searchSeriesList(searchWord: String): List { + val where = series.isActive.isTrue + .and(series.member.isNotNull) + .and(series.member.isActive.isTrue) + + return queryFactory + .select( + QGetAdminSearchSeriesListItem( + series.id, + series.title + ) + ) + .from(series) + .innerJoin(series.member, member) + .where(where) + .orderBy(series.id.desc()) + .fetch() + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesService.kt index 6cb2df0..1a949d2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/AdminContentSeriesService.kt @@ -14,4 +14,8 @@ class AdminContentSeriesService(private val repository: AdminContentSeriesReposi return GetAdminSeriesListResponse(totalCount, items) } + + fun searchSeriesList(searchWord: String): List { + return repository.searchSeriesList(searchWord) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/GetAdminSeriesListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/GetAdminSeriesListResponse.kt index 3682943..ec03b71 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/GetAdminSeriesListResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/GetAdminSeriesListResponse.kt @@ -18,3 +18,8 @@ data class GetAdminSeriesListItem @QueryProjection constructor( val state: String, val isAdult: Boolean ) + +data class GetAdminSearchSeriesListItem @QueryProjection constructor( + val id: Long, + val title: String +)