From 4f0bbe096e2063b5a6f128e8ca6e1fac56ce011b Mon Sep 17 00:00:00 2001 From: pricelees Date: Sat, 27 Sep 2025 20:17:36 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20JPA=20Audit=20=EB=B0=8F=20ID=20Gene?= =?UTF-8?q?rator=20=EC=84=A4=EC=A0=95=20=EB=AA=A8=EB=93=88=20=EC=9D=B4?= =?UTF-8?q?=EC=A0=84(service=20->=20common.persistence)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/persistence/PersistenceConfig.kt | 36 +++++++++++++++++++ .../roomescape/common/config/JpaConfig.kt | 20 ----------- 2 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 common/persistence/src/main/kotlin/com/sangdol/common/persistence/PersistenceConfig.kt delete mode 100644 service/src/main/kotlin/com/sangdol/roomescape/common/config/JpaConfig.kt diff --git a/common/persistence/src/main/kotlin/com/sangdol/common/persistence/PersistenceConfig.kt b/common/persistence/src/main/kotlin/com/sangdol/common/persistence/PersistenceConfig.kt new file mode 100644 index 00000000..1cf26620 --- /dev/null +++ b/common/persistence/src/main/kotlin/com/sangdol/common/persistence/PersistenceConfig.kt @@ -0,0 +1,36 @@ +package com.sangdol.common.persistence + +import com.github.f4b6a3.tsid.TsidFactory +import com.sangdol.common.utils.MdcPrincipalIdUtil +import org.springframework.beans.factory.annotation.Value +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration +import org.springframework.context.annotation.Primary +import org.springframework.data.domain.AuditorAware +import org.springframework.data.jpa.repository.config.EnableJpaAuditing +import java.util.* + +@Configuration +@EnableJpaAuditing +class PersistenceConfig { + + @Value("\${POD_NAME:app-0}") + private lateinit var podName: String + + @Bean + fun auditorAware(): AuditorAware = MdcAuditorAware() + + @Bean + @Primary + fun idGenerator(): IDGenerator { + val node = podName.substringAfterLast("-").toInt() + + val tsidFactory = TsidFactory.builder().withNode(node).build() + + return TsidIDGenerator(tsidFactory) + } +} + +class MdcAuditorAware : AuditorAware { + override fun getCurrentAuditor(): Optional = MdcPrincipalIdUtil.extractAsOptionalLongOrEmpty() +} diff --git a/service/src/main/kotlin/com/sangdol/roomescape/common/config/JpaConfig.kt b/service/src/main/kotlin/com/sangdol/roomescape/common/config/JpaConfig.kt deleted file mode 100644 index a34c0251..00000000 --- a/service/src/main/kotlin/com/sangdol/roomescape/common/config/JpaConfig.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.sangdol.roomescape.common.config - -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration -import org.springframework.data.domain.AuditorAware -import org.springframework.data.jpa.repository.config.EnableJpaAuditing -import com.sangdol.roomescape.common.util.MdcPrincipalId -import java.util.* - -@Configuration -@EnableJpaAuditing -class JpaConfig { - - @Bean - fun auditorAware(): AuditorAware = MdcAuditorAware() -} - -class MdcAuditorAware : AuditorAware { - override fun getCurrentAuditor(): Optional = MdcPrincipalId.extractAsOptionalLongOrEmpty() -}