From ddab3b18a6bef810d5fe8ef3b9a3225b73e09fd1 Mon Sep 17 00:00:00 2001 From: pricelees Date: Mon, 29 Sep 2025 15:43:48 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20TransactionExecutionUtil=EC=9D=98?= =?UTF-8?q?=20nullable=20=EB=B0=98=ED=99=98=ED=83=80=EC=9E=85=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment/business/PaymentService.kt | 3 +++ .../com/sangdol/data/DefaultDataInitializer.kt | 16 ++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/service/src/main/kotlin/com/sangdol/roomescape/payment/business/PaymentService.kt b/service/src/main/kotlin/com/sangdol/roomescape/payment/business/PaymentService.kt index dc77b7bb..8336919c 100644 --- a/service/src/main/kotlin/com/sangdol/roomescape/payment/business/PaymentService.kt +++ b/service/src/main/kotlin/com/sangdol/roomescape/payment/business/PaymentService.kt @@ -41,6 +41,9 @@ class PaymentService( val detail: PaymentDetailEntity = paymentWriter.createDetail(clientConfirmResponse, payment.id) PaymentCreateResponse(paymentId = payment.id, detailId = detail.id) + } ?: run { + log.warn { "[PaymentService.confirm] 결제 확정 중 예상치 못한 null 반환" } + throw PaymentException(PaymentErrorCode.PAYMENT_UNEXPECTED_ERROR) } } diff --git a/service/src/test/kotlin/com/sangdol/data/DefaultDataInitializer.kt b/service/src/test/kotlin/com/sangdol/data/DefaultDataInitializer.kt index 43d88804..04f7ab1c 100644 --- a/service/src/test/kotlin/com/sangdol/data/DefaultDataInitializer.kt +++ b/service/src/test/kotlin/com/sangdol/data/DefaultDataInitializer.kt @@ -135,7 +135,7 @@ class DefaultDataInitializer : AbstractDataInitializer() { listOf(AdminPermissionLevel.FULL_ACCESS, AdminPermissionLevel.WRITABLE) ) .resultList - }.map { it.toString() } + }!!.map { it.toString() } val sqlFile = storeDataInitializer.createStoreDataSqlFile(creatableAdminIds) @@ -156,7 +156,7 @@ class DefaultDataInitializer : AbstractDataInitializer() { "SELECT s.id FROM StoreEntity s", Long::class.java ).resultList - }.map { it as Long } + }!!.map { it as Long } transactionExecutionUtil.withNewTransaction(isReadOnly = false) { storeIds.forEach { storeId -> @@ -209,7 +209,7 @@ class DefaultDataInitializer : AbstractDataInitializer() { listOf(AdminPermissionLevel.FULL_ACCESS, AdminPermissionLevel.WRITABLE) ) .resultList - } + }!! val sql = "INSERT INTO theme (id, name, description, thumbnail_url, is_active, available_minutes, expected_minutes_from, expected_minutes_to, price, difficulty, min_participants, max_participants, created_at, created_by, updated_at, updated_by) VALUES (?," + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" @@ -270,7 +270,7 @@ class UserDataInitializer : AbstractDataInitializer() { "SELECT r.code FROM RegionEntity r", String::class.java ).resultList - } + }!! val chunkSize = 10_000 val chunks = userCount / chunkSize @@ -299,7 +299,7 @@ class UserDataInitializer : AbstractDataInitializer() { """.trimIndent(), UserEntity::class.java ).resultList - } + }!! jdbcTemplate.execute("CREATE INDEX idx_users__phone ON users (phone)") @@ -338,7 +338,7 @@ class UserDataInitializer : AbstractDataInitializer() { "SELECT u.id FROM UserEntity u", Long::class.java ).resultList - } + }!! coroutineScope { userId.chunked(10_000).map { chunk -> @@ -494,7 +494,7 @@ class ScheduleDataInitializer : AbstractDataInitializer() { ).setParameter("type", AdminType.STORE) .setParameter("permissionLevel", AdminPermissionLevel.FULL_ACCESS) .resultList - }.map { + }!!.map { val array = it as List<*> Pair(array[0] as Long, array[1] as Long) } @@ -507,7 +507,7 @@ class ScheduleDataInitializer : AbstractDataInitializer() { List::class.java ) .resultList - }.map { + }!!.map { val array = it as List<*> Triple(array[0] as Long, array[1] as Short, array[2] as LocalDateTime) }