kotlin-db-migration

A MySQL db migration

Лицензия

Лицензия

Категории

Категории

Kotlin Языки программирования
Группа

Группа

info.purocean
Идентификатор

Идентификатор

kotlin-db-migration
Последняя версия

Последняя версия

1.2.1
Дата

Дата

Тип

Тип

jar
Описание

Описание

kotlin-db-migration
A MySQL db migration
Ссылка на сайт

Ссылка на сайт

https://github.com/purocean/kotlin-db-migration
Система контроля версий

Система контроля версий

https://github.com/purocean/kotlin-db-migration

Скачать kotlin-db-migration

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/info.purocean/kotlin-db-migration/ -->
<dependency>
    <groupId>info.purocean</groupId>
    <artifactId>kotlin-db-migration</artifactId>
    <version>1.2.1</version>
</dependency>
// https://jarcasting.com/artifacts/info.purocean/kotlin-db-migration/
implementation 'info.purocean:kotlin-db-migration:1.2.1'
// https://jarcasting.com/artifacts/info.purocean/kotlin-db-migration/
implementation ("info.purocean:kotlin-db-migration:1.2.1")
'info.purocean:kotlin-db-migration:jar:1.2.1'
<dependency org="info.purocean" name="kotlin-db-migration" rev="1.2.1">
  <artifact name="kotlin-db-migration" type="jar" />
</dependency>
@Grapes(
@Grab(group='info.purocean', module='kotlin-db-migration', version='1.2.1')
)
libraryDependencies += "info.purocean" % "kotlin-db-migration" % "1.2.1"
[info.purocean/kotlin-db-migration "1.2.1"]

Зависимости

compile (3)

Идентификатор библиотеки Тип Версия
org.jetbrains.kotlin : kotlin-stdlib-jdk8 jar 1.3.11
mysql : mysql-connector-java jar 6.0.6
org.reflections : reflections jar 0.9.11

Модули Проекта

Данный проект не имеет модулей.

kotlin-db-migration

// https://search.maven.org/artifact/info.purocean/kotlin-db-migration/1.0/jar
compile('info.purocean:kotlin-db-migration:1.0')

Trait

  1. simple & light
  2. name based version
  3. support dry run
  4. support code migration and sql migration

With Spring

@Component
class Migration: InitializingBean, ApplicationListener<ApplicationReadyEvent>{
    @Value("\${spring.datasource.url}")
    val dbUrl: String = ""

    @Value("\${spring.datasource.username}")
    val dbUsername: String = ""

    @Value("\${spring.datasource.password}")
    val dbPassword: String = ""

    @Autowired
    lateinit var migrationConfig: MigrationConfigProperties

    @Autowired
    protected var context: ApplicationContext? = null

    override fun afterPropertiesSet() {
        if (migrationConfig.isEnable) {
            Migrate(dbUrl, dbUsername, dbPassword).run(migrationConfig.isDryRun)
        }
    }

    override fun onApplicationEvent(event: ApplicationReadyEvent) {
        Migrate(dbUrl, dbUsername, dbPassword).runCode(context, migrationConfig.isDryRun)
    }
}
class M2018_03_15_105104_test_migration: CodeMigration<ApplicationContext> {
    override fun run(context: ApplicationContext) {
        // context.getBean("xxx")
        // do what every you want
    }
}

Gradle task help create migration

    // ./gradlew createMigration -Ptp=code -Pmn=create_role_table
    createMigration.doLast {
        if (project.hasProperty('mn')) {
            def content = "\n"
            def fileName = ""
            def path = ""

            if (project.hasProperty('tp') && project.tp == 'code') {
                def className = "M" + (new Date()).format('yyyy_MM_dd_HHmmss_') + "${project.mn}"
                fileName = "${className}.kt"
                path = "$projectDir/src/main/kotlin/db/migrations"
                content = """
package db.migrations

import info.purocean.dbmigration.CodeMigration
import org.springframework.context.ApplicationContext

class ${className}: CodeMigration<ApplicationContext> {
    override fun run(context: ApplicationContext) {
        // TODO
    }
}
"""
            } else {
                fileName = (new Date()).format('yyyy_MM_dd_HHmmss_') + "${project.mn}.sql"
                path = "$projectDir/src/main/resources/db/migrations"
            }

            new File(path).mkdirs()

            def file = new File("$path/$fileName")

            file.createNewFile()

            file.text = content

            println("created:$path/$fileName")
        } else {
            println("no name!")
        }
    }

Версии библиотеки

Версия
1.2.1
1.2.0
1.1.0
1.0