번역 이벤트 커밋 후 처리 분기
This commit is contained in:
@@ -28,6 +28,7 @@ import kr.co.vividnext.sodalive.content.translation.ContentTranslation
|
||||
import kr.co.vividnext.sodalive.content.translation.ContentTranslationPayload
|
||||
import kr.co.vividnext.sodalive.content.translation.ContentTranslationRepository
|
||||
import kr.co.vividnext.sodalive.i18n.translation.PapagoTranslationService.Companion.getTranslatableLanguageCodes
|
||||
import org.springframework.context.event.EventListener
|
||||
import org.springframework.data.repository.findByIdOrNull
|
||||
import org.springframework.scheduling.annotation.Async
|
||||
import org.springframework.stereotype.Component
|
||||
@@ -51,7 +52,8 @@ enum class LanguageTranslationTargetType {
|
||||
|
||||
class LanguageTranslationEvent(
|
||||
val id: Long,
|
||||
val targetType: LanguageTranslationTargetType
|
||||
val targetType: LanguageTranslationTargetType,
|
||||
val waitTransactionCommit: Boolean = false
|
||||
)
|
||||
|
||||
@Component
|
||||
@@ -76,9 +78,20 @@ class LanguageTranslationListener(
|
||||
private val translationService: PapagoTranslationService
|
||||
) {
|
||||
@Async
|
||||
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
|
||||
@EventListener(condition = "!#event.waitTransactionCommit")
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
fun translation(event: LanguageTranslationEvent) {
|
||||
fun translationImmediate(event: LanguageTranslationEvent) {
|
||||
processTranslation(event)
|
||||
}
|
||||
|
||||
@Async
|
||||
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, condition = "#event.waitTransactionCommit")
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
fun translationAfterCommit(event: LanguageTranslationEvent) {
|
||||
processTranslation(event)
|
||||
}
|
||||
|
||||
private fun processTranslation(event: LanguageTranslationEvent) {
|
||||
when (event.targetType) {
|
||||
LanguageTranslationTargetType.CONTENT -> handleContentLanguageTranslation(event)
|
||||
LanguageTranslationTargetType.CHARACTER -> handleCharacterLanguageTranslation(event)
|
||||
@@ -92,8 +105,7 @@ class LanguageTranslationListener(
|
||||
|
||||
private fun handleContentLanguageTranslation(event: LanguageTranslationEvent) {
|
||||
val audioContent = audioContentRepository.findByIdOrNull(event.id) ?: return
|
||||
val languageCode = audioContent.languageCode
|
||||
if (languageCode != null) return
|
||||
val languageCode = audioContent.languageCode ?: return
|
||||
|
||||
getTranslatableLanguageCodes(languageCode).forEach { locale ->
|
||||
val tags = audioContent.audioContentHashTags
|
||||
@@ -150,8 +162,7 @@ class LanguageTranslationListener(
|
||||
|
||||
private fun handleCharacterLanguageTranslation(event: LanguageTranslationEvent) {
|
||||
val character = chatCharacterRepository.findByIdOrNull(event.id) ?: return
|
||||
val languageCode = character.languageCode
|
||||
if (languageCode != null) return
|
||||
val languageCode = character.languageCode ?: return
|
||||
|
||||
getTranslatableLanguageCodes(languageCode).forEach { locale ->
|
||||
val personality = character.personalities.firstOrNull()
|
||||
@@ -285,8 +296,7 @@ class LanguageTranslationListener(
|
||||
|
||||
private fun handleSeriesLanguageTranslation(event: LanguageTranslationEvent) {
|
||||
val series = seriesRepository.findByIdOrNull(event.id) ?: return
|
||||
val languageCode = series.languageCode
|
||||
if (languageCode != null) return
|
||||
val languageCode = series.languageCode ?: return
|
||||
|
||||
getTranslatableLanguageCodes(languageCode).forEach { locale ->
|
||||
val keywords = series.keywordList
|
||||
@@ -385,8 +395,7 @@ class LanguageTranslationListener(
|
||||
|
||||
private fun handleOriginalWorkLanguageTranslation(event: LanguageTranslationEvent) {
|
||||
val originalWork = originalWorkRepository.findByIdOrNull(event.id) ?: return
|
||||
val languageCode = originalWork.languageCode
|
||||
if (languageCode != null) return
|
||||
val languageCode = originalWork.languageCode ?: return
|
||||
|
||||
/**
|
||||
* handleSeriesLanguageTranslation 참조하여 원작 번역 구현
|
||||
|
||||
Reference in New Issue
Block a user