관리자 콘텐츠 메인 탭 조회 API
This commit is contained in:
parent
d36aada227
commit
00ce6d6a7a
|
@ -42,6 +42,9 @@ class AdminContentController(private val service: AdminContentService) {
|
||||||
fun modifyAudioContent(
|
fun modifyAudioContent(
|
||||||
@RequestBody request: UpdateAdminContentRequest
|
@RequestBody request: UpdateAdminContentRequest
|
||||||
) = ApiResponse.ok(service.updateAudioContent(request))
|
) = ApiResponse.ok(service.updateAudioContent(request))
|
||||||
|
|
||||||
|
@GetMapping("/main/tab")
|
||||||
|
fun getContentMainTabList() = ApiResponse.ok(service.getContentMainTabList())
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class ContentReleaseStatus {
|
enum class ContentReleaseStatus {
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
package kr.co.vividnext.sodalive.admin.content
|
package kr.co.vividnext.sodalive.admin.content
|
||||||
|
|
||||||
import kr.co.vividnext.sodalive.admin.content.curation.AdminContentCurationRepository
|
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.admin.content.theme.AdminContentThemeRepository
|
||||||
import kr.co.vividnext.sodalive.aws.cloudfront.AudioContentCloudFront
|
import kr.co.vividnext.sodalive.aws.cloudfront.AudioContentCloudFront
|
||||||
import kr.co.vividnext.sodalive.common.SodaException
|
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.domain.Pageable
|
||||||
import org.springframework.data.repository.findByIdOrNull
|
import org.springframework.data.repository.findByIdOrNull
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
|
@ -14,7 +16,8 @@ class AdminContentService(
|
||||||
private val repository: AdminContentRepository,
|
private val repository: AdminContentRepository,
|
||||||
private val themeRepository: AdminContentThemeRepository,
|
private val themeRepository: AdminContentThemeRepository,
|
||||||
private val audioContentCloudFront: AudioContentCloudFront,
|
private val audioContentCloudFront: AudioContentCloudFront,
|
||||||
private val curationRepository: AdminContentCurationRepository
|
private val curationRepository: AdminContentCurationRepository,
|
||||||
|
private val contentMainTabRepository: AdminContentMainTabRepository
|
||||||
) {
|
) {
|
||||||
fun getAudioContentList(status: ContentReleaseStatus, pageable: Pageable): GetAdminContentListResponse {
|
fun getAudioContentList(status: ContentReleaseStatus, pageable: Pageable): GetAdminContentListResponse {
|
||||||
val totalCount = repository.getAudioContentTotalCount(status = status)
|
val totalCount = repository.getAudioContentTotalCount(status = status)
|
||||||
|
@ -118,4 +121,8 @@ class AdminContentService(
|
||||||
audioContent.theme = theme
|
audioContent.theme = theme
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getContentMainTabList(): List<GetContentMainTabItem> {
|
||||||
|
return contentMainTabRepository.findAllByActiveIsTrue()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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<AudioContentMainTab, Long>, AdminContentMainTabQueryRepository
|
||||||
|
|
||||||
|
interface AdminContentMainTabQueryRepository {
|
||||||
|
fun findAllByActiveIsTrue(): List<GetContentMainTabItem>
|
||||||
|
}
|
||||||
|
|
||||||
|
class AdminContentMainTabQueryRepositoryImpl(
|
||||||
|
private val queryFactory: JPAQueryFactory
|
||||||
|
) : AdminContentMainTabQueryRepository {
|
||||||
|
override fun findAllByActiveIsTrue(): List<GetContentMainTabItem> {
|
||||||
|
return queryFactory
|
||||||
|
.select(
|
||||||
|
QGetContentMainTabItem(
|
||||||
|
audioContentMainTab.id,
|
||||||
|
audioContentMainTab.title
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.from(audioContentMainTab)
|
||||||
|
.where(audioContentMainTab.isActive.isTrue)
|
||||||
|
.fetch()
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
||||||
|
)
|
Loading…
Reference in New Issue