From e00a9ccff5784876b35981c5ed49607cca2bda9f Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 15 Dec 2025 16:27:29 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8B=9C=EB=A6=AC=EC=A6=88=20=EC=83=81?= =?UTF-8?q?=EC=84=B8,=20=EC=8B=9C=EB=A6=AC=EC=A6=88=20=ED=82=A4=EC=9B=8C?= =?UTF-8?q?=EB=93=9C=20=EB=B2=88=EC=97=AD=20=EC=97=94=ED=8B=B0=ED=8B=B0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../translation/SeriesGenreTranslation.kt | 11 ++++ .../series/translation/SeriesTranslation.kt | 50 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/content/series/translation/SeriesGenreTranslation.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/content/series/translation/SeriesTranslation.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/translation/SeriesGenreTranslation.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/translation/SeriesGenreTranslation.kt new file mode 100644 index 0000000..9de7c1c --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/translation/SeriesGenreTranslation.kt @@ -0,0 +1,11 @@ +package kr.co.vividnext.sodalive.content.series.translation + +import kr.co.vividnext.sodalive.common.BaseEntity +import javax.persistence.Entity + +@Entity +class SeriesGenreTranslation( + val seriesGenreId: Long, + val locale: String, + val genre: String +) : BaseEntity() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/series/translation/SeriesTranslation.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/translation/SeriesTranslation.kt new file mode 100644 index 0000000..75dbbdd --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/series/translation/SeriesTranslation.kt @@ -0,0 +1,50 @@ +package kr.co.vividnext.sodalive.content.series.translation + +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import com.fasterxml.jackson.module.kotlin.readValue +import kr.co.vividnext.sodalive.common.BaseEntity +import javax.persistence.AttributeConverter +import javax.persistence.Column +import javax.persistence.Convert +import javax.persistence.Converter +import javax.persistence.Entity + +@Entity +class SeriesTranslation( + val seriesId: Long, + val locale: String, + + @Column(columnDefinition = "json") + @Convert(converter = SeriesTranslationPayloadConverter::class) + var renderedPayload: SeriesTranslationPayload +) : BaseEntity() + +data class SeriesTranslationPayload( + val title: String, + val introduction: String, + val keywords: String +) + +@Converter(autoApply = false) +class SeriesTranslationPayloadConverter : AttributeConverter { + + override fun convertToDatabaseColumn(attribute: SeriesTranslationPayload?): String { + if (attribute == null) return "{}" + return objectMapper.writeValueAsString(attribute) + } + + override fun convertToEntityAttribute(dbData: String?): SeriesTranslationPayload { + if (dbData.isNullOrBlank()) { + return SeriesTranslationPayload( + title = "", + introduction = "", + keywords = "" + ) + } + return objectMapper.readValue(dbData) + } + + companion object { + private val objectMapper = jacksonObjectMapper() + } +}