Skip to content

Commit

Permalink
refactor: AttributeConverter 추상화
Browse files Browse the repository at this point in the history
  • Loading branch information
woowabrie committed Jun 14, 2024
1 parent bede24b commit d1a727f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 25 deletions.
18 changes: 12 additions & 6 deletions src/main/kotlin/support/domain/StringToListConverter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,24 @@ package support.domain

import javax.persistence.AttributeConverter
import javax.persistence.Converter
import kotlin.reflect.KClass
import kotlin.reflect.safeCast

@Converter
class StringToListConverter : AttributeConverter<List<String>, String> {
override fun convertToDatabaseColumn(recipients: List<String>): String {
return recipients.joinToString(COMMA)
abstract class StringToListConverter<T : Any>(
private val type: KClass<T>,
) : AttributeConverter<List<T>, String> {
override fun convertToDatabaseColumn(attribute: List<T>): String {
return attribute.joinToString(COMMA)
}

override fun convertToEntityAttribute(dbData: String): List<String> {
return dbData.split(COMMA)
override fun convertToEntityAttribute(dbData: String): List<T> {
return dbData.split(COMMA).mapNotNull { type.safeCast(it) }
}

companion object {
private const val COMMA: String = ","
}
}

@Converter
class StringToLongListConverter : StringToListConverter<Long>(Long::class)
19 changes: 0 additions & 19 deletions src/main/kotlin/support/domain/StringToLongListConverter.kt

This file was deleted.

0 comments on commit d1a727f

Please sign in to comment.