관리자 시리즈 검색 API 추가

This commit is contained in:
Klaus 2025-01-17 04:06:19 +09:00
parent e0c9a2cea7
commit 40c0b72450
4 changed files with 38 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import org.springframework.data.domain.Pageable
import org.springframework.security.access.prepost.PreAuthorize import org.springframework.security.access.prepost.PreAuthorize
import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
@RestController @RestController
@ -13,4 +14,9 @@ import org.springframework.web.bind.annotation.RestController
class AdminContentSeriesController(private val service: AdminContentSeriesService) { class AdminContentSeriesController(private val service: AdminContentSeriesService) {
@GetMapping @GetMapping
fun getSeriesList(pageable: Pageable) = ApiResponse.ok(service.getSeriesList(pageable)) fun getSeriesList(pageable: Pageable) = ApiResponse.ok(service.getSeriesList(pageable))
@GetMapping("/search")
fun searchSeriesList(
@RequestParam(value = "search_word") searchWord: String
) = ApiResponse.ok(service.searchSeriesList(searchWord))
} }

View File

@ -20,6 +20,8 @@ interface AdminContentSeriesQueryRepository {
offset: Long, offset: Long,
limit: Long limit: Long
): List<GetAdminSeriesListItem> ): List<GetAdminSeriesListItem>
fun searchSeriesList(searchWord: String): List<GetAdminSearchSeriesListItem>
} }
class AdminContentSeriesQueryRepositoryImpl( class AdminContentSeriesQueryRepositoryImpl(
@ -31,6 +33,7 @@ class AdminContentSeriesQueryRepositoryImpl(
override fun getSeriesTotalCount(): Int { override fun getSeriesTotalCount(): Int {
val where = series.isActive.isTrue val where = series.isActive.isTrue
.and(series.member.isNotNull) .and(series.member.isNotNull)
.and(series.member.isActive.isTrue)
return queryFactory return queryFactory
.select(series.id) .select(series.id)
@ -43,6 +46,7 @@ class AdminContentSeriesQueryRepositoryImpl(
override fun getSeriesList(offset: Long, limit: Long): List<GetAdminSeriesListItem> { override fun getSeriesList(offset: Long, limit: Long): List<GetAdminSeriesListItem> {
val where = series.isActive.isTrue val where = series.isActive.isTrue
.and(series.member.isNotNull) .and(series.member.isNotNull)
.and(series.member.isActive.isTrue)
return queryFactory return queryFactory
.select( .select(
@ -73,4 +77,23 @@ class AdminContentSeriesQueryRepositoryImpl(
.orderBy(series.member.id.asc(), series.orders.asc()) .orderBy(series.member.id.asc(), series.orders.asc())
.fetch() .fetch()
} }
override fun searchSeriesList(searchWord: String): List<GetAdminSearchSeriesListItem> {
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()
}
} }

View File

@ -14,4 +14,8 @@ class AdminContentSeriesService(private val repository: AdminContentSeriesReposi
return GetAdminSeriesListResponse(totalCount, items) return GetAdminSeriesListResponse(totalCount, items)
} }
fun searchSeriesList(searchWord: String): List<GetAdminSearchSeriesListItem> {
return repository.searchSeriesList(searchWord)
}
} }

View File

@ -18,3 +18,8 @@ data class GetAdminSeriesListItem @QueryProjection constructor(
val state: String, val state: String,
val isAdult: Boolean val isAdult: Boolean
) )
data class GetAdminSearchSeriesListItem @QueryProjection constructor(
val id: Long,
val title: String
)