test #369

Merged
klaus merged 90 commits from test into main 2025-12-31 05:44:55 +00:00
Showing only changes of commit 9b2b156d40 - Show all commits

View File

@@ -1,7 +1,6 @@
package kr.co.vividnext.sodalive.content.series.translation package kr.co.vividnext.sodalive.content.series.translation
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import kr.co.vividnext.sodalive.common.BaseEntity import kr.co.vividnext.sodalive.common.BaseEntity
import javax.persistence.AttributeConverter import javax.persistence.AttributeConverter
import javax.persistence.Column import javax.persistence.Column
@@ -22,7 +21,7 @@ class SeriesTranslation(
data class SeriesTranslationPayload( data class SeriesTranslationPayload(
val title: String, val title: String,
val introduction: String, val introduction: String,
val keywords: String val keywords: List<String>
) )
@Converter(autoApply = false) @Converter(autoApply = false)
@@ -38,10 +37,34 @@ class SeriesTranslationPayloadConverter : AttributeConverter<SeriesTranslationPa
return SeriesTranslationPayload( return SeriesTranslationPayload(
title = "", title = "",
introduction = "", introduction = "",
keywords = "" keywords = emptyList()
)
}
// 호환 처리: 과거 스키마에서 keywords가 String 이었을 수 있으므로 유연하게 파싱한다.
return try {
val node = objectMapper.readTree(dbData)
val title = node.get("title")?.asText() ?: ""
val introduction = node.get("introduction")?.asText() ?: ""
val keywordsNode = node.get("keywords")
val keywords: List<String> = when {
keywordsNode == null || keywordsNode.isNull -> emptyList()
keywordsNode.isArray -> keywordsNode.mapNotNull { it.asText(null) }.filter { it.isNotBlank() }
keywordsNode.isTextual -> listOfNotNull(keywordsNode.asText()).filter { it.isNotBlank() }
else -> emptyList()
}
SeriesTranslationPayload(
title = title,
introduction = introduction,
keywords = keywords
)
} catch (_: Exception) {
// 파싱 실패 시 안전한 기본값 반환
SeriesTranslationPayload(
title = "",
introduction = "",
keywords = emptyList()
) )
} }
return objectMapper.readValue(dbData)
} }
companion object { companion object {