fix(content-preference): 멤버 콘텐츠 선호 신규 생성 정책을 저장값 기준으로 정리한다
This commit is contained in:
@@ -23,6 +23,11 @@ class MemberContentPreferenceService(
|
||||
private val countryContext: CountryContext,
|
||||
private val cacheManager: CacheManager
|
||||
) {
|
||||
private data class PreferenceSeed(
|
||||
val isAdultContentVisible: Boolean,
|
||||
val contentType: ContentType
|
||||
)
|
||||
|
||||
companion object {
|
||||
private const val RECOMMEND_LIVE_CACHE_NAME = "cache_ttl_3_hours"
|
||||
private const val RECOMMEND_LIVE_CACHE_KEY_PREFIX = "getRecommendLive:"
|
||||
@@ -32,6 +37,19 @@ class MemberContentPreferenceService(
|
||||
|
||||
@Transactional
|
||||
fun initializeDefaultPreference(member: Member): MemberContentPreference {
|
||||
return initializeDefaultPreference(
|
||||
member = member,
|
||||
seed = PreferenceSeed(
|
||||
isAdultContentVisible = false,
|
||||
contentType = ContentType.ALL
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private fun initializeDefaultPreference(
|
||||
member: Member,
|
||||
seed: PreferenceSeed
|
||||
): MemberContentPreference {
|
||||
val memberId = requireMemberId(member)
|
||||
|
||||
val existingPreference = repository.findByMemberId(memberId)
|
||||
@@ -49,8 +67,8 @@ class MemberContentPreferenceService(
|
||||
|
||||
val now = LocalDateTime.now()
|
||||
val preference = MemberContentPreference(
|
||||
isAdultContentVisible = false,
|
||||
contentType = ContentType.ALL,
|
||||
isAdultContentVisible = seed.isAdultContentVisible,
|
||||
contentType = seed.contentType,
|
||||
adultContentVisibilityChangedAt = now,
|
||||
contentTypeChangedAt = now
|
||||
)
|
||||
@@ -69,24 +87,15 @@ class MemberContentPreferenceService(
|
||||
isAdultContentVisible: Boolean?,
|
||||
contentType: ContentType?
|
||||
): ViewerContentPreference {
|
||||
val preference = initializeDefaultPreference(member)
|
||||
val countryCode = resolveCountryCode(member)
|
||||
|
||||
val hasChanged = if (isAdultContentVisible != null || contentType != null) {
|
||||
applyRequestValues(
|
||||
preference = preference,
|
||||
val preference = initializeDefaultPreference(
|
||||
member = member,
|
||||
seed = resolvePreferenceSeedForQuery(
|
||||
member = member,
|
||||
countryCode = countryCode,
|
||||
isAdultContentVisible = isAdultContentVisible,
|
||||
contentType = contentType
|
||||
)
|
||||
} else {
|
||||
false
|
||||
}
|
||||
|
||||
if (hasChanged) {
|
||||
evictRecommendLiveCacheAfterCommit(requireMemberId(member))
|
||||
}
|
||||
)
|
||||
val countryCode = resolveCountryCode(member)
|
||||
|
||||
return toViewerContentPreference(
|
||||
countryCode = countryCode,
|
||||
@@ -169,6 +178,24 @@ class MemberContentPreferenceService(
|
||||
}
|
||||
}
|
||||
|
||||
private fun resolvePreferenceSeedForQuery(
|
||||
member: Member,
|
||||
isAdultContentVisible: Boolean?,
|
||||
contentType: ContentType?
|
||||
): PreferenceSeed {
|
||||
if (member.auth == null) {
|
||||
return PreferenceSeed(
|
||||
isAdultContentVisible = false,
|
||||
contentType = ContentType.ALL
|
||||
)
|
||||
}
|
||||
|
||||
return PreferenceSeed(
|
||||
isAdultContentVisible = isAdultContentVisible ?: true,
|
||||
contentType = contentType ?: ContentType.ALL
|
||||
)
|
||||
}
|
||||
|
||||
private fun applyRequestValues(
|
||||
preference: MemberContentPreference,
|
||||
member: Member,
|
||||
|
||||
Reference in New Issue
Block a user