diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreController.kt index b0dd061..6963e74 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreController.kt @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.admin.content.series.genre import kr.co.vividnext.sodalive.common.ApiResponse import org.springframework.security.access.prepost.PreAuthorize +import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.RequestBody @@ -27,4 +28,7 @@ class AdminContentSeriesGenreController(private val service: AdminContentSeriesG service.modifySeriesGenreOrders(ids = request.ids), "수정되었습니다." ) + + @GetMapping + fun getSeriesGenreList() = ApiResponse.ok(service.getSeriesGenreList()) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreRepository.kt index b91ffa5..3587baa 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreRepository.kt @@ -1,9 +1,24 @@ package kr.co.vividnext.sodalive.admin.content.series.genre +import com.querydsl.jpa.impl.JPAQueryFactory +import kr.co.vividnext.sodalive.admin.content.series.genre.QSeriesGenre.seriesGenre import org.springframework.data.jpa.repository.JpaRepository interface AdminContentSeriesGenreRepository : JpaRepository, AdminContentSeriesGenreQueryRepository -interface AdminContentSeriesGenreQueryRepository +interface AdminContentSeriesGenreQueryRepository { + fun getSeriesGenreList(): List +} -class AdminContentSeriesGenreQueryRepositoryImpl : AdminContentSeriesGenreQueryRepository +class AdminContentSeriesGenreQueryRepositoryImpl( + private val queryFactory: JPAQueryFactory +) : AdminContentSeriesGenreQueryRepository { + override fun getSeriesGenreList(): List { + return queryFactory + .select(QGetSeriesGenreListResponse(seriesGenre.id, seriesGenre.genre, seriesGenre.isAdult)) + .from(seriesGenre) + .where(seriesGenre.isActive.isTrue) + .orderBy(seriesGenre.orders.asc()) + .fetch() + } +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreService.kt index 058b782..30cb1b2 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/AdminContentSeriesGenreService.kt @@ -46,4 +46,8 @@ class AdminContentSeriesGenreService(private val repository: AdminContentSeriesG } } } + + fun getSeriesGenreList(): List { + return repository.getSeriesGenreList() + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/GetSeriesGenreListResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/GetSeriesGenreListResponse.kt new file mode 100644 index 0000000..d642c47 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/series/genre/GetSeriesGenreListResponse.kt @@ -0,0 +1,9 @@ +package kr.co.vividnext.sodalive.admin.content.series.genre + +import com.querydsl.core.annotations.QueryProjection + +data class GetSeriesGenreListResponse @QueryProjection constructor( + val id: Long, + val genre: String, + val isAdult: Boolean +)