Kotlin のデータベースマイグレーションライブラリ Harmonica の バージョン 1.1.10 をリリースしました。
コードは GitHub で確認できます。
新機能
バージョン 1.0.10 から追加された大きめの変更は次の通りです。
- 外部キー
refer
関数で、外部キー制約付きのカラムを作成できます。addForeignKey
関数で、新しい外部キー制約を追加できます。- SQLite のサポート
- MySQL と PostgreSQL に加え、 SQLite でも使えるようにしました。
- カラム、テーブル、インデックスの名前変更
- Added function to rename column and table and index.
date
,addDecimalColumn
- Add the function,
addDecimalColumn
to add decimal column to existing table. Now,date
andaddDateColumn
functions can accept default value in many types,String
,Date
,LocalDate
. addDateColumn
- Add the function,
addDateColumn
to add date column to existing table. blob
,time
,timestamp
,datetime
のサポート- 上記の型のカラムを作れるようにしました。
- インデックスメソッド
- インデックスを作成するときに、 BTree などのインデックス作成方法を選択できるようにしました。
マイグレーションサンプル
マイグレーションコードの例を示します。 このコードは GitHub: Harmonica Test にあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/** * NotNullMigration */ class M20180714194338790_NotNullMigration : AbstractMigration() { override fun up() { createTable("not_null_table") { decimal("decimal_column", nullable = false) blob("blob_column", nullable = false) date("date_column", nullable = false) time("time_column", nullable = false) dateTime("date_time_column", nullable = false) timestamp("timestamp_column", nullable = false) text("text_column", nullable = false) refer("normal_table") } val tableName = "not_null_table_for_add" createTable(tableName) {} addDecimalColumn( tableName, "decimal_column", nullable = false) addBlobColumn( tableName, "blob_column", nullable = false) addDateColumn( tableName, "date_column", nullable = false) addTimeColumn( tableName, "time_column", nullable = false) addDateTimeColumn( tableName, "date_tiem_column", nullable = false) addTimestampColumn( tableName, "timestamp_column", nullable = false) addTextColumn( tableName, "text_column", nullable = false) addForeignKey( "not_null_table_for_add", "integer_column", "normal_table_for_add") } override fun down() { dropTable("not_null_table_for_add") dropTable("not_null_table") } } |