feat(content-ranking): 랭킹 차단 조회 포트를 추가한다

This commit is contained in:
2026-06-24 19:01:58 +09:00
parent 6fabcca03f
commit 90c5149df8
3 changed files with 144 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
package kr.co.vividnext.sodalive.v2.content.ranking.adapter.out.persistence
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.member.block.QBlockMember
import kr.co.vividnext.sodalive.v2.content.ranking.port.out.AudioRankingBlockPort
import org.springframework.stereotype.Repository
@Repository
class DefaultAudioRankingBlockRepository(
private val queryFactory: JPAQueryFactory
) : AudioRankingBlockPort {
override fun findBlockedCreatorMemberIds(memberId: Long, creatorMemberIds: Set<Long>): Set<Long> {
if (creatorMemberIds.isEmpty()) return emptySet()
val viewerBlock = QBlockMember("audioRankingViewerBlock")
val creatorBlock = QBlockMember("audioRankingCreatorBlock")
val viewerBlockedIds = queryFactory
.select(viewerBlock.blockedMember.id)
.from(viewerBlock)
.where(
viewerBlock.isActive.isTrue,
viewerBlock.member.id.eq(memberId),
viewerBlock.blockedMember.id.`in`(creatorMemberIds)
)
.fetch()
val creatorBlockedIds = queryFactory
.select(creatorBlock.member.id)
.from(creatorBlock)
.where(
creatorBlock.isActive.isTrue,
creatorBlock.member.id.`in`(creatorMemberIds),
creatorBlock.blockedMember.id.eq(memberId)
)
.fetch()
return (viewerBlockedIds + creatorBlockedIds).toSet()
}
}

View File

@@ -0,0 +1,5 @@
package kr.co.vividnext.sodalive.v2.content.ranking.port.out
interface AudioRankingBlockPort {
fun findBlockedCreatorMemberIds(memberId: Long, creatorMemberIds: Set<Long>): Set<Long>
}