43 lines
1.6 KiB
Kotlin
43 lines
1.6 KiB
Kotlin
package top.fatweb.oxygen.api.config
|
|
|
|
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource
|
|
import jakarta.annotation.PostConstruct
|
|
import org.flywaydb.core.Flyway
|
|
import org.springframework.context.annotation.Configuration
|
|
import org.springframework.context.annotation.DependsOn
|
|
import top.fatweb.oxygen.api.properties.FlywayProperties
|
|
import javax.sql.DataSource
|
|
|
|
/**
|
|
* Flyway configuration
|
|
*
|
|
* @author FatttSnake, fatttsnake@gmail.com
|
|
* @since 1.0.0
|
|
*/
|
|
@DependsOn("flywayProperties")
|
|
@Configuration
|
|
class FlywayConfig(
|
|
private val dataSource: DataSource
|
|
) {
|
|
@PostConstruct
|
|
fun migrateOrder() {
|
|
val ds = dataSource as DynamicRoutingDataSource
|
|
ds.dataSources.forEach { (k: String, v: DataSource?) ->
|
|
val flyway = Flyway.configure()
|
|
.dataSource(v)
|
|
.locations(*FlywayProperties.locations.map { "$it/$k" }.toTypedArray())
|
|
.baselineOnMigrate(FlywayProperties.baselineOnMigrate)
|
|
.table(FlywayProperties.table)
|
|
.outOfOrder(FlywayProperties.outOfOrder)
|
|
.validateOnMigrate(FlywayProperties.validateOnMigrate)
|
|
.encoding(FlywayProperties.encoding)
|
|
.sqlMigrationPrefix(FlywayProperties.sqlMigrationPrefix)
|
|
.sqlMigrationSeparator(FlywayProperties.sqlMigrationSeparator)
|
|
.sqlMigrationSuffixes(*FlywayProperties.sqlMigrationSuffixes.toTypedArray())
|
|
.baselineVersion(FlywayProperties.baselineVersion)
|
|
.load()
|
|
flyway.migrate()
|
|
}
|
|
|
|
}
|
|
} |