Ktorm migration support
Needs a full tutorial, supporting tools, and more testing, but otherwise complete.
In your app, use MigratableTable, MigratableBaseTable, MigratableMapTable, or MigratableTableMixin instead of your usual tables.
You now have access to additional extension functions on your types, including
column.size(128) // For size of varchar, etc
column.default("Default Value")
column.default(otherColumn) // Can be an expression instead
column.unique() // Adds a unique constraint
column.foreignKey(OtherTable) // Adds a foreign key constraint
column.notNull()When you first start, create the migrations folder using the function initializeMigrations. This will generate a LatestMigration.kt you can use later.
initializeMigrations(
folder = File("src/test/kotlin/org/ktorm/testmigrations"),
packageName = "org.ktorm.testmigrations"
)Then we can start using makeMigrations to automatically create new migrations for us:
makeMigrations(
folder = File("src/test/kotlin/org/ktorm/testmigrations"),
packageName = "org.ktorm.testmigrations",
latestMigration = LatestMigration,
tables = arrayOf(
// All of your tables go here
Departments,
Employees,
Customers
)
)This will populate the folder with your migrations.
myDatabase.migrate(LatestMigration)- We need a lot more testing
- Transformed fields are unsupported in automatic migration generation, due to being not being reproducible in source.
- No specific database
DialectimplementsSqlSchemaFormatteryet- Specific implementations are gonna be annoying. This repo will need a module for every supported one.