From 530447e64d03f8d1928b17a0a625c980d4119eee Mon Sep 17 00:00:00 2001 From: asolovieff Date: Tue, 21 Sep 2021 11:54:12 +0200 Subject: [PATCH] feat #143 JdbcDriver.listExecutedScripts() modification + test --- .../datamaintain/db/driver/jdbc/JdbcDriver.kt | 25 +++++--------- .../db/driver/jdbc/JdbcDriverTest.kt | 33 ++++++++++++++----- 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/modules/driver-jdbc/src/main/kotlin/datamaintain/db/driver/jdbc/JdbcDriver.kt b/modules/driver-jdbc/src/main/kotlin/datamaintain/db/driver/jdbc/JdbcDriver.kt index b27155d5..814f8593 100644 --- a/modules/driver-jdbc/src/main/kotlin/datamaintain/db/driver/jdbc/JdbcDriver.kt +++ b/modules/driver-jdbc/src/main/kotlin/datamaintain/db/driver/jdbc/JdbcDriver.kt @@ -1,10 +1,7 @@ package datamaintain.db.driver.jdbc import datamaintain.core.db.driver.DatamaintainDriver -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.ExecutionStatus -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.ScriptWithContent +import datamaintain.core.script.* import datamaintain.core.step.executor.Execution import java.sql.Connection import java.sql.DriverManager @@ -28,14 +25,14 @@ class JdbcDriver(jdbcUri: String) : DatamaintainDriver(jdbcUri) { } } - override fun listExecutedScripts(): Sequence { + override fun listExecutedScripts(): Sequence { createExecutedScriptsTableIfNotExists() val statement = connection.createStatement() - val executionOutput: ResultSet = statement.executeQuery("SELECT * from $EXECUTED_SCRIPTS_TABLE") - val executedScript = mutableListOf() + val executionOutput: ResultSet = statement.executeQuery("SELECT name, checksum, identifier from $EXECUTED_SCRIPTS_TABLE") + val executedScript = mutableListOf() while (executionOutput.next()) { - executedScript.add(executionOutput.toExecutedScript()) + executedScript.add(executionOutput.toLightExecutedScript()) } return executedScript.asSequence() } @@ -94,13 +91,9 @@ class JdbcDriver(jdbcUri: String) : DatamaintainDriver(jdbcUri) { return executedScript } - fun ResultSet.toExecutedScript() = ExecutedScript( - name = this.getString("name"), - checksum = this.getString("checksum"), - executionDurationInMillis = this.getLong("executionDurationInMillis"), - executionOutput = this.getString("executionOutput"), - executionStatus = ExecutionStatus.valueOf(this.getString("executionStatus")), - identifier = this.getString("identifier"), - action = ScriptAction.valueOf(this.getString("action")) + private fun ResultSet.toLightExecutedScript() = LightExecutedScript( + name = this.getString("name"), + checksum = this.getString("checksum"), + identifier = this.getString("identifier") ) } diff --git a/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/JdbcDriverTest.kt b/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/JdbcDriverTest.kt index 1cd72be6..22ef1741 100644 --- a/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/JdbcDriverTest.kt +++ b/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/JdbcDriverTest.kt @@ -1,9 +1,6 @@ package datamaintain.db.driver.jdbc -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.ExecutionStatus -import datamaintain.core.script.FileScript -import datamaintain.core.script.ScriptAction +import datamaintain.core.script.* import org.h2.tools.Server import org.junit.jupiter.api.* import strikt.api.expectThat @@ -45,7 +42,7 @@ internal class JdbcDriverTest { val executedScripts = jdbcDatamaintainDriver.listExecutedScripts() // Then - expectThat(executedScripts.toList()).containsExactlyInAnyOrder(script1, script2) + expectThat(executedScripts.toList()).containsExactlyInAnyOrder(lightScript1, lightScript2) } @Test @@ -61,13 +58,19 @@ internal class JdbcDriverTest { executionDurationInMillis = 0 ) + val lightScript3 = LightExecutedScript( + script3.name, + script3.checksum, + script3.identifier + ) + // When jdbcDatamaintainDriver.markAsExecuted(script3) // Then expectThat(jdbcDatamaintainDriver.listExecutedScripts().toList()) - .containsExactlyInAnyOrder(script1, script2, script3) + .containsExactlyInAnyOrder(lightScript1, lightScript2, lightScript3) } @Nested @@ -138,14 +141,16 @@ internal class JdbcDriverTest { executionStatus = ExecutionStatus.OK, action = ScriptAction.OVERRIDE_EXECUTED) + val lightScript3 = LightExecutedScript(script3.name, script3.checksum, script3.identifier) + // When jdbcDatamaintainDriver.overrideScript(script3) // Then expectThat(jdbcDatamaintainDriver.listExecutedScripts().toList()) .containsExactlyInAnyOrder( - script3, - script2 + lightScript3, + lightScript2 ) } @@ -167,6 +172,18 @@ internal class JdbcDriverTest { 0 ) + private val lightScript1 = LightExecutedScript( + script1.name, + script1.checksum, + script1.identifier + ) + + private val lightScript2 = LightExecutedScript( + script2.name, + script2.checksum, + script2.identifier + ) + private fun insertDataInDb() { connection.prepareStatement(""" INSERT INTO ${JdbcDriver.EXECUTED_SCRIPTS_TABLE} (