Merge pull request #18 from TouchInstinct/common-spring-jpa/liquibase
add liquibase starter
This commit is contained in:
commit
8dcfd83bef
|
|
@ -37,6 +37,9 @@
|
|||
|
||||
* `models.*` - базовые `Entity`
|
||||
* `repositories` - утилиты и доп. интерфейсы для репозиториев
|
||||
* `liquibase.LiquibaseStart` - для подключения этого компонента необходимо объявить `liquibase.LiquibaseParams`.
|
||||
Указать путь к файлу с миграцией и схему, для которой эта миграция будет применяться. С помощью `LiquibaseStart`
|
||||
можно применить кастомную миграцию не конфликтуя с основной.
|
||||
* `EnableJpaAuditingExtra` - подключение `JpaAuditing` с поддержкой типа `ZoneDateTime`
|
||||
|
||||
## common-spring-web
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
package ru.touchin.common.spring.jpa.liquibase
|
||||
|
||||
data class LiquibaseParams(
|
||||
val schema: String,
|
||||
val changeLogPath: String,
|
||||
)
|
||||
|
|
@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue