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() -}