feat(channel-donation): 원본을 보존하는 후원 숨김 저장 모델을 추가한다

This commit is contained in:
2026-11-05 02:19:30 +09:00
parent e1e6554da5
commit d0b5fff40d
5 changed files with 240 additions and 0 deletions
@@ -15,6 +15,9 @@ class ChannelDonationMessage(
@Column(columnDefinition = "TEXT")
var additionalMessage: String? = null
) : BaseEntity() {
@Column(nullable = false)
var isHidden: Boolean = false
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id", nullable = false)
var member: Member? = null
@@ -0,0 +1,30 @@
package kr.co.vividnext.sodalive.v2.creator.channel.donation.adapter.out.persistence
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.explorer.profile.channelDonation.QChannelDonationMessage.channelDonationMessage
import kr.co.vividnext.sodalive.v2.creator.channel.donation.port.out.HideCreatorChannelDonationPort
import org.springframework.stereotype.Repository
import org.springframework.transaction.annotation.Transactional
@Repository
class DefaultHideCreatorChannelDonationRepository(
private val queryFactory: JPAQueryFactory
) : HideCreatorChannelDonationPort {
@Transactional
override fun hideOwnedDonation(creatorId: Long, donationId: Long): Boolean {
val ownedDonation = channelDonationMessage.id.eq(donationId)
.and(channelDonationMessage.creator.id.eq(creatorId))
val updatedCount = queryFactory
.update(channelDonationMessage)
.set(channelDonationMessage.isHidden, true)
.set(channelDonationMessage.updatedAt, channelDonationMessage.updatedAt)
.where(ownedDonation, channelDonationMessage.isHidden.isFalse)
.execute()
return updatedCount > 0 || queryFactory
.selectOne()
.from(channelDonationMessage)
.where(ownedDonation)
.fetchFirst() != null
}
}
@@ -0,0 +1,5 @@
package kr.co.vividnext.sodalive.v2.creator.channel.donation.port.out
interface HideCreatorChannelDonationPort {
fun hideOwnedDonation(creatorId: Long, donationId: Long): Boolean
}