feat(ranking): 크리에이터 랭킹 차단 조회 저장소를 추가한다

This commit is contained in:
2026-06-08 22:18:02 +09:00
parent be726f0aac
commit 5b9fdacde1

View File

@@ -0,0 +1,40 @@
package kr.co.vividnext.sodalive.v2.ranking.adapter.out.persistence
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.member.block.QBlockMember
import kr.co.vividnext.sodalive.v2.ranking.port.out.CreatorRankingBlockPort
import org.springframework.stereotype.Repository
@Repository
class DefaultCreatorRankingBlockRepository(
private val queryFactory: JPAQueryFactory
) : CreatorRankingBlockPort {
override fun findBlockedCreatorIds(memberId: Long, creatorIds: Collection<Long>): Set<Long> {
if (creatorIds.isEmpty()) {
return emptySet()
}
val viewerBlock = QBlockMember("creatorRankingViewerBlock")
val creatorBlock = QBlockMember("creatorRankingCreatorBlock")
val blockedByViewer = queryFactory
.select(viewerBlock.blockedMember.id)
.from(viewerBlock)
.where(
viewerBlock.member.id.eq(memberId)
.and(viewerBlock.blockedMember.id.`in`(creatorIds))
.and(viewerBlock.isActive.isTrue)
)
.fetch()
val blockedByCreator = queryFactory
.select(creatorBlock.member.id)
.from(creatorBlock)
.where(
creatorBlock.member.id.`in`(creatorIds)
.and(creatorBlock.blockedMember.id.eq(memberId))
.and(creatorBlock.isActive.isTrue)
)
.fetch()
return (blockedByViewer + blockedByCreator).toSet()
}
}