diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt index d86afd3..409adb8 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentController.kt @@ -105,6 +105,7 @@ class AudioContentController(private val service: AudioContentService) { fun getAudioContentList( @RequestParam("creator-id") creatorId: Long, @RequestParam("sort-type", required = false) sortType: SortType = SortType.NEWEST, + @RequestParam("category-id", required = false) categoryId: Long = 0, @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?, pageable: Pageable ) = run { @@ -114,6 +115,7 @@ class AudioContentController(private val service: AudioContentService) { service.getAudioContentList( creatorId = creatorId, sortType = sortType, + categoryId = categoryId, member = member, offset = pageable.offset, limit = pageable.pageSize.toLong() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt index 4e90a0e..ff06f60 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentRepository.kt @@ -4,6 +4,7 @@ import com.querydsl.core.types.dsl.Expressions import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.content.QAudioContent.audioContent import kr.co.vividnext.sodalive.content.QBundleAudioContent.bundleAudioContent +import kr.co.vividnext.sodalive.content.category.QCategoryContent.categoryContent import kr.co.vividnext.sodalive.content.comment.QAudioContentComment.audioContentComment import kr.co.vividnext.sodalive.content.like.QAudioContentLike.audioContentLike import kr.co.vividnext.sodalive.content.main.GetAudioContentMainItem @@ -37,6 +38,7 @@ interface AudioContentQueryRepository { coverImageHost: String, isAdult: Boolean = false, sortType: SortType = SortType.NEWEST, + categoryId: Long = 0, offset: Long = 0, limit: Long = 10 ): List @@ -144,6 +146,7 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) coverImageHost: String, isAdult: Boolean, sortType: SortType, + categoryId: Long, offset: Long, limit: Long ): List { @@ -163,6 +166,10 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) where = where.and(audioContent.isAdult.isFalse) } + if (categoryId > 0) { + where = where.and(categoryContent.category.id.eq(categoryId)) + } + return queryFactory .select( QGetAudioContentListItem( @@ -180,6 +187,8 @@ class AudioContentQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) ) ) .from(audioContent) + .leftJoin(categoryContent) + .on(audioContent.id.eq(categoryContent.content.id).and(categoryContent.isActive.ne(false))) .leftJoin(pinContent) .on(audioContent.id.eq(pinContent.content.id).and(pinContent.isActive.ne(false))) .where(where) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt index 9c52cb4..832a9f9 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt @@ -624,6 +624,7 @@ class AudioContentService( creatorId: Long, sortType: SortType, member: Member, + categoryId: Long = 0, offset: Long, limit: Long ): GetAudioContentListResponse { @@ -637,6 +638,7 @@ class AudioContentService( coverImageHost = coverImageHost, isAdult = member.auth != null, sortType = sortType, + categoryId = categoryId, offset = offset, limit = limit )