Compare commits

..

6 Commits

Author SHA1 Message Date
90fcdcaa4f Update README.md 2026-04-16 16:17:12 +00:00
d26f0a1310 Upgrade dependencies 2026-02-19 14:16:50 +01:00
e3931e3e8f improve ci 2026-01-13 18:16:01 +01:00
3380f50cc7 update README
All checks were successful
/ publish (push) Successful in 1m2s
2025-12-13 23:11:46 +01:00
b777eadd13 bump version to 1.1.1 2025-12-13 23:09:13 +01:00
bba1f2d63d update dependencies 2025-12-13 23:09:05 +01:00
6 changed files with 50 additions and 64 deletions

View File

@@ -1,34 +0,0 @@
on:
push:
branches:
- main
env:
INFENDRO__TOKEN: ${{ secrets.TOKEN }}
jobs:
publish:
runs-on: linux
steps:
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
with:
key: gradle
path: |
~/.gradle/caches/
~/.gradle/wrapper/
- uses: actions/setup-java@v4
with:
java-version: '24'
distribution: 'temurin'
- run: ./gradlew publish
- uses: actions/cache/save@v4
with:
key: gradle
path: |
~/.gradle/caches/
~/.gradle/wrapper/

View File

@@ -0,0 +1,30 @@
on:
push:
branches: [ main ]
jobs:
publish:
runs-on: linux
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
java-version: '24'
distribution: 'temurin'
- name: Cache Gradle
uses: actions/cache@v4
with:
key: gradle-${{ hashFiles('**/libs.versions.toml') }}
restore-keys: gradle
path: |
~/.gradle/caches/
~/.gradle/wrapper/
- name: Publish
run: ./gradlew publish
env:
INFENDRO__TOKEN: ${{ secrets.TOKEN }}

View File

@@ -1,12 +1,6 @@
# Ktor Plugin for Database Migration # migration.ktor
This plugin enables code-based database migrations in Ktor using [Kotlin Database Migration](https://git.infendro.com/Infendro/kotlin-migration). `migration.ktor` is a Kotlin library that enables code-based migrations in Ktor.
## Features
* Declare database migrations (identified by a unique name).
* Migrations are executed in the order they are declared in.
* Executed migrations are tracked in a database table and skipped on subsequent runs.
## Installation ## Installation
@@ -18,17 +12,13 @@ repositories {
} }
dependencies { dependencies {
implementation("com.infendro:ktor-migration:1.1.0") implementation("com.infendro:ktor-migration:1.2.0")
} }
``` ```
## Usage ## Usage
```kotlin ```kotlin
import com.infendro.ktor.migration.Migration
import io.ktor.server.application.*
import org.jetbrains.exposed.sql.Database
fun Application.configureDatabase() { fun Application.configureDatabase() {
// connect to a database // connect to a database
Database.connect(/* parameters */) Database.connect(/* parameters */)

View File

@@ -2,7 +2,7 @@ import com.infendro.plugin.infendro
import com.infendro.plugin.token import com.infendro.plugin.token
group = "com.infendro" group = "com.infendro"
version = "1.1.0" version = "1.2.0"
plugins { plugins {
alias(libs.plugins.infendro) alias(libs.plugins.infendro)
@@ -16,9 +16,10 @@ repositories {
} }
dependencies { dependencies {
implementation(libs.migration)
implementation(libs.ktor.server) implementation(libs.ktor.server)
implementation(libs.migration)
implementation(libs.exposed) implementation(libs.exposed)
implementation(libs.exposed.jdbc)
} }
publishing { publishing {

View File

@@ -1,15 +1,16 @@
[versions] [versions]
infendro = "1.0.0" infendro = "1.1.0"
kotlin = "2.2.10" kotlin = "2.3.0"
ktor = "3.2.3" ktor = "3.4.0"
exposed = "0.61.0" migration = "1.2.0"
migration = "1.1.1" exposed = "1.0.0"
[plugins] [plugins]
infendro = { id = "com.infendro.plugin", version.ref = "infendro" } infendro = { id = "com.infendro.plugin", version.ref = "infendro" }
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
[libraries] [libraries]
migration = { module = "com.infendro:migration", version.ref = "migration" }
ktor-server = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" } ktor-server = { module = "io.ktor:ktor-server-core-jvm", version.ref = "ktor" }
migration = { module = "com.infendro:migration", version.ref = "migration" }
exposed = { module = "org.jetbrains.exposed:exposed-core", version.ref = "exposed" } exposed = { module = "org.jetbrains.exposed:exposed-core", version.ref = "exposed" }
exposed-jdbc = { module = "org.jetbrains.exposed:exposed-jdbc", version.ref = "exposed" }

View File

@@ -2,20 +2,18 @@ package com.infendro.ktor.migration
import com.infendro.migration.migrate import com.infendro.migration.migrate
import io.ktor.server.application.* import io.ktor.server.application.*
import org.jetbrains.exposed.sql.Transaction import org.jetbrains.exposed.v1.jdbc.JdbcTransaction
val Migration = createApplicationPlugin( val Migration = createApplicationPlugin("Migration", MigrationConfig::new) {
name = "Migration",
createConfiguration = { MigrationConfig() },
) {
migrate(pluginConfig.config) migrate(pluginConfig.config)
} }
class MigrationConfig { class MigrationConfig {
internal val config = com.infendro.migration.MigrationConfig() internal val config = com.infendro.migration.MigrationConfig()
fun migration( fun migration(name: String, migrate: JdbcTransaction.() -> Unit) = config.migration(name, migrate)
name: String,
migrate: Transaction.() -> Unit, companion object {
) = config.migration(name, migrate) fun new() = MigrationConfig()
}
} }