diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentController.kt index fa875fb..65ebb64 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentController.kt @@ -42,6 +42,9 @@ class AdminContentController(private val service: AdminContentService) { fun modifyAudioContent( @RequestBody request: UpdateAdminContentRequest ) = ApiResponse.ok(service.updateAudioContent(request)) + + @GetMapping("/main/tab") + fun getContentMainTabList() = ApiResponse.ok(service.getContentMainTabList()) } enum class ContentReleaseStatus { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentService.kt index ebf0445..9733e46 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/AdminContentService.kt @@ -1,9 +1,11 @@ package kr.co.vividnext.sodalive.admin.content import kr.co.vividnext.sodalive.admin.content.curation.AdminContentCurationRepository +import kr.co.vividnext.sodalive.admin.content.tab.AdminContentMainTabRepository import kr.co.vividnext.sodalive.admin.content.theme.AdminContentThemeRepository import kr.co.vividnext.sodalive.aws.cloudfront.AudioContentCloudFront import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.content.main.tab.GetContentMainTabItem import org.springframework.data.domain.Pageable import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service @@ -14,7 +16,8 @@ class AdminContentService( private val repository: AdminContentRepository, private val themeRepository: AdminContentThemeRepository, private val audioContentCloudFront: AudioContentCloudFront, - private val curationRepository: AdminContentCurationRepository + private val curationRepository: AdminContentCurationRepository, + private val contentMainTabRepository: AdminContentMainTabRepository ) { fun getAudioContentList(status: ContentReleaseStatus, pageable: Pageable): GetAdminContentListResponse { val totalCount = repository.getAudioContentTotalCount(status = status) @@ -118,4 +121,8 @@ class AdminContentService( audioContent.theme = theme } } + + fun getContentMainTabList(): List { + return contentMainTabRepository.findAllByActiveIsTrue() + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/tab/AdminContentMainTabRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/tab/AdminContentMainTabRepository.kt new file mode 100644 index 0000000..38f690b --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/tab/AdminContentMainTabRepository.kt @@ -0,0 +1,31 @@ +package kr.co.vividnext.sodalive.admin.content.tab + +import com.querydsl.jpa.impl.JPAQueryFactory +import kr.co.vividnext.sodalive.content.main.tab.AudioContentMainTab +import kr.co.vividnext.sodalive.content.main.tab.GetContentMainTabItem +import kr.co.vividnext.sodalive.content.main.tab.QAudioContentMainTab.audioContentMainTab +import kr.co.vividnext.sodalive.content.main.tab.QGetContentMainTabItem +import org.springframework.data.jpa.repository.JpaRepository + +interface AdminContentMainTabRepository : JpaRepository, AdminContentMainTabQueryRepository + +interface AdminContentMainTabQueryRepository { + fun findAllByActiveIsTrue(): List +} + +class AdminContentMainTabQueryRepositoryImpl( + private val queryFactory: JPAQueryFactory +) : AdminContentMainTabQueryRepository { + override fun findAllByActiveIsTrue(): List { + return queryFactory + .select( + QGetContentMainTabItem( + audioContentMainTab.id, + audioContentMainTab.title + ) + ) + .from(audioContentMainTab) + .where(audioContentMainTab.isActive.isTrue) + .fetch() + } +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/GetContentMainTabItem.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/GetContentMainTabItem.kt new file mode 100644 index 0000000..72b2b81 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/tab/GetContentMainTabItem.kt @@ -0,0 +1,8 @@ +package kr.co.vividnext.sodalive.content.main.tab + +import com.querydsl.core.annotations.QueryProjection + +data class GetContentMainTabItem @QueryProjection constructor( + val tabId: Long, + val title: String +)