test #255
@@ -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
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
		Reference in New Issue
	
	Block a user