관리자 시리즈 검색 API 추가
This commit is contained in:
		| @@ -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)) | ||||
| } | ||||
|   | ||||
| @@ -20,6 +20,8 @@ interface AdminContentSeriesQueryRepository { | ||||
|         offset: Long, | ||||
|         limit: Long | ||||
|     ): List<GetAdminSeriesListItem> | ||||
|  | ||||
|     fun searchSeriesList(searchWord: String): List<GetAdminSearchSeriesListItem> | ||||
| } | ||||
|  | ||||
| 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<GetAdminSeriesListItem> { | ||||
|         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<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() | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -14,4 +14,8 @@ class AdminContentSeriesService(private val repository: AdminContentSeriesReposi | ||||
|  | ||||
|         return GetAdminSeriesListResponse(totalCount, items) | ||||
|     } | ||||
|  | ||||
|     fun searchSeriesList(searchWord: String): List<GetAdminSearchSeriesListItem> { | ||||
|         return repository.searchSeriesList(searchWord) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
| ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user