diff --git a/app-server/subprojects/cross_cutting_concern/infra/persistence_model/src/main/sqldelight/club/staircrusher/infra/persistence/sqldelight/query/external_accessibility/ExternalAccessibility.sq b/app-server/subprojects/cross_cutting_concern/infra/persistence_model/src/main/sqldelight/club/staircrusher/infra/persistence/sqldelight/query/external_accessibility/ExternalAccessibility.sq index bb4558612..057ffaac6 100644 --- a/app-server/subprojects/cross_cutting_concern/infra/persistence_model/src/main/sqldelight/club/staircrusher/infra/persistence/sqldelight/query/external_accessibility/ExternalAccessibility.sq +++ b/app-server/subprojects/cross_cutting_concern/infra/persistence_model/src/main/sqldelight/club/staircrusher/infra/persistence/sqldelight/query/external_accessibility/ExternalAccessibility.sq @@ -9,7 +9,7 @@ ON CONFLICT(id) DO UPDATE SET category = EXCLUDED.category, details = EXCLUDED.details, created_at = EXCLUDED.created_at, - updated_at = NULL; + updated_at = EXCLUDED.updated_at; removeAll: DELETE FROM external_accessibility; diff --git a/app-server/subprojects/cross_cutting_concern/stdlib/src/main/kotlin/club/staircrusher/stdlib/jpa/ListToTextAttributeConverter.kt b/app-server/subprojects/cross_cutting_concern/stdlib/src/main/kotlin/club/staircrusher/stdlib/jpa/ListToTextAttributeConverter.kt index e62d9babb..7702f4801 100644 --- a/app-server/subprojects/cross_cutting_concern/stdlib/src/main/kotlin/club/staircrusher/stdlib/jpa/ListToTextAttributeConverter.kt +++ b/app-server/subprojects/cross_cutting_concern/stdlib/src/main/kotlin/club/staircrusher/stdlib/jpa/ListToTextAttributeConverter.kt @@ -11,7 +11,10 @@ abstract class ListToTextAttributeConverter : AttributeConverter, Str return attribute.joinToString(LEGACY_DELIMITER) { convertElementToTextColumn(it) } } - override fun convertToEntityAttribute(column: String): List { + override fun convertToEntityAttribute(column: String?): List { + if (column == null) { + return emptyList() + } return try { convertJsonColumnToEntityAttribute(column) } catch (e: JsonProcessingException) { diff --git a/app-server/subprojects/cross_cutting_concern/stdlib/src/unitTest/kotlin/club/staircrusher/stdlib/persistence/ListToTextAttributeConverterUT.kt b/app-server/subprojects/cross_cutting_concern/stdlib/src/unitTest/kotlin/club/staircrusher/stdlib/persistence/ListToTextAttributeConverterUT.kt index c8f0abaca..3f438a221 100644 --- a/app-server/subprojects/cross_cutting_concern/stdlib/src/unitTest/kotlin/club/staircrusher/stdlib/persistence/ListToTextAttributeConverterUT.kt +++ b/app-server/subprojects/cross_cutting_concern/stdlib/src/unitTest/kotlin/club/staircrusher/stdlib/persistence/ListToTextAttributeConverterUT.kt @@ -3,6 +3,7 @@ package club.staircrusher.stdlib.persistence import club.staircrusher.stdlib.jpa.ListToTextAttributeConverter import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotEquals +import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test class ListToTextAttributeConverterUT { @@ -32,6 +33,12 @@ class ListToTextAttributeConverterUT { assertEquals(attribute, serialized) } + @Test + fun `db 에 null 이 저장된 케이스도 잘 처리해준다`() { + val serialized = sut.convertToEntityAttribute(null) + assertTrue(serialized.isEmpty()) + } + // FIXME: json으로 바꾸기 // @Test // fun `기본 동작 테스트`() {