add liquibase starter

This commit is contained in:
Alexander Buntakov 2021-06-10 18:36:53 +03:00
parent 0677782b2e
commit e006783ae4
3 changed files with 44 additions and 0 deletions

View File

@ -7,5 +7,9 @@ plugins {
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation(project(":common-spring"))
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
compileOnly("org.liquibase:liquibase-core")
}

View File

@ -0,0 +1,6 @@
package ru.touchin.common.spring.jpa.liquibase
data class LiquibaseParams(
val schema: String,
val changeLogPath: String,
)

View File

@ -0,0 +1,34 @@
@file:Suppress("unused")
package ru.touchin.common.spring.jpa.liquibase
import liquibase.Contexts
import liquibase.Liquibase
import liquibase.database.Database
import liquibase.database.DatabaseFactory
import liquibase.database.jvm.JdbcConnection
import liquibase.resource.ClassLoaderResourceAccessor
import org.springframework.stereotype.Component
import ru.touchin.common.spring.annotations.RunOnceOnStartup
import javax.sql.DataSource
@Component
class LiquibaseStart(
private val dataSource: DataSource,
private val liquibaseParams: LiquibaseParams,
) {
@RunOnceOnStartup
fun runLiquibase() {
dataSource.connection.use { connection ->
val database: Database = DatabaseFactory.getInstance()
.findCorrectDatabaseImplementation(JdbcConnection(connection))
.apply { defaultSchemaName = liquibaseParams.schema }
val liquibase = Liquibase(liquibaseParams.changeLogPath, ClassLoaderResourceAccessor(), database)
liquibase.update(Contexts())
}
}
}