From 0491a444aa63fcb9b7f1e800fa0d34debdcbef5e Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Sat, 15 Oct 2022 00:38:51 +0200 Subject: [PATCH] Fix enum class Status() --- .../fr/postgresjson/migration/Function.kt | 52 +++++++++++-------- .../fr/postgresjson/migration/Migrations.kt | 2 +- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/src/main/kotlin/fr/postgresjson/migration/Function.kt b/src/main/kotlin/fr/postgresjson/migration/Function.kt index 20a31dc..73f445a 100644 --- a/src/main/kotlin/fr/postgresjson/migration/Function.kt +++ b/src/main/kotlin/fr/postgresjson/migration/Function.kt @@ -37,36 +37,44 @@ data class Function( ) override fun up(): Status { - try { - connection.sendQuery(up.script) - } catch (e: CompletionException) { - val cause = e.cause - if (cause is GenericDatabaseException && cause.errorMessage.fields['C'] == "42P13") { - connection.sendQuery("drop function ${down.getDefinition()}") + return try { + try { connection.sendQuery(up.script) + } catch (e: CompletionException) { + val cause = e.cause + if (cause is GenericDatabaseException && cause.errorMessage.fields['C'] == "42P13") { + connection.sendQuery("drop function ${down.getDefinition()}") + connection.sendQuery(up.script) + } } + + this::class.java.classLoader + .getResource("sql/migration/insertFunction.sql")!!.readText() + .let { connection.selectOne(it, listOf(up.name, up.getDefinition(), up.script, down.script)) } + ?.let { function -> + executedAt = function.executedAt + doExecute = Action.OK + } + + Status.OK + } catch (e: Throwable) { + Status.UP_FAIL } - - this::class.java.classLoader - .getResource("sql/migration/insertFunction.sql")!!.readText() - .let { connection.selectOne(it, listOf(up.name, up.getDefinition(), up.script, down.script)) } - ?.let { function -> - executedAt = function.executedAt - doExecute = Action.OK - } - - return Status.OK } override fun down(): Status { - connection.sendQuery(down.script) + return try { + connection.sendQuery(down.script) - this::class.java.classLoader - .getResource("sql/migration/deleteFunction.sql")!! - .readText() - .let { connection.sendQuery(it, listOf(down.name)) } + this::class.java.classLoader + .getResource("sql/migration/deleteFunction.sql")!! + .readText() + .let { connection.sendQuery(it, listOf(down.name)) } - return Status.OK + Status.OK + } catch (e: Throwable) { + Status.DOWN_FAIL + } } override fun test(): Status { diff --git a/src/main/kotlin/fr/postgresjson/migration/Migrations.kt b/src/main/kotlin/fr/postgresjson/migration/Migrations.kt index 751018f..4f62845 100644 --- a/src/main/kotlin/fr/postgresjson/migration/Migrations.kt +++ b/src/main/kotlin/fr/postgresjson/migration/Migrations.kt @@ -29,7 +29,7 @@ interface Migration { fun down(): Status fun test(): Status - enum class Status(i: Int) { OK(2), UP_FAIL(0), DOWN_FAIL(1) } + enum class Status(val i: Int) { OK(2), UP_FAIL(0), DOWN_FAIL(1) } enum class Action { OK, UP, DOWN } }