diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt index b6d0c14..67e7502 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AdminContentCurationService.kt @@ -1,5 +1,6 @@ package kr.co.vividnext.sodalive.admin.content.curation +import kr.co.vividnext.sodalive.admin.content.tab.AdminContentMainTabRepository import kr.co.vividnext.sodalive.common.SodaException import kr.co.vividnext.sodalive.content.main.curation.AudioContentCuration import org.springframework.data.repository.findByIdOrNull @@ -8,17 +9,23 @@ import org.springframework.transaction.annotation.Transactional @Service class AdminContentCurationService( - private val repository: AdminContentCurationRepository + private val repository: AdminContentCurationRepository, + private val contentMainTabRepository: AdminContentMainTabRepository ) { @Transactional fun createContentCuration(request: CreateContentCurationRequest) { - repository.save( - AudioContentCuration( - title = request.title, - description = request.description, - isAdult = request.isAdult - ) + val tab = contentMainTabRepository.findByIdOrNull(request.tabId) + ?: throw SodaException("잘못된 요청입니다.") + + val curation = AudioContentCuration( + title = request.title, + description = request.description, + isAdult = request.isAdult, + isSeries = request.isSeries ) + curation.tab = tab + + repository.save(curation) } @Transactional @@ -41,6 +48,18 @@ class AdminContentCurationService( if (request.isActive != null) { audioContentCuration.isActive = request.isActive } + + if (request.isSeries != null) { + audioContentCuration.isSeries = request.isSeries + } + + if (request.tabId != null) { + val tab = contentMainTabRepository.findByIdOrNull(request.tabId) + + if (tab != null) { + audioContentCuration.tab = tab + } + } } @Transactional diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AudioContentCurationRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AudioContentCurationRequest.kt index 49b46d7..b2ae35d 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AudioContentCurationRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/content/curation/AudioContentCurationRequest.kt @@ -1,16 +1,20 @@ package kr.co.vividnext.sodalive.admin.content.curation data class CreateContentCurationRequest( + val tabId: Long, val title: String, val description: String, - val isAdult: Boolean + val isAdult: Boolean, + val isSeries: Boolean ) data class UpdateContentCurationRequest( val id: Long, + val tabId: Long?, val title: String?, val description: String?, val isAdult: Boolean?, + val isSeries: Boolean?, val isActive: Boolean? ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCuration.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCuration.kt index d5955cf..eeebc15 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCuration.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/curation/AudioContentCuration.kt @@ -1,8 +1,12 @@ package kr.co.vividnext.sodalive.content.main.curation import kr.co.vividnext.sodalive.common.BaseEntity +import kr.co.vividnext.sodalive.content.main.tab.AudioContentMainTab import javax.persistence.Column import javax.persistence.Entity +import javax.persistence.FetchType +import javax.persistence.JoinColumn +import javax.persistence.OneToOne import javax.persistence.Table @Entity @@ -17,5 +21,11 @@ data class AudioContentCuration( @Column(nullable = false) var isActive: Boolean = true, @Column(nullable = false) - var orders: Int = 1 -) : BaseEntity() + var orders: Int = 1, + @Column(nullable = false) + var isSeries: Boolean = false +) : BaseEntity() { + @OneToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "tab_id", nullable = true) + var tab: AudioContentMainTab? = null +}