バージョン1.0アナウンスされています。
Announcing SQLDelight 1.0 – Alec Strong – Medium
神も。
In 2018 I was most thankful for SQL Delight.
In 2019 I'm most looking forward to SQL Delight.— Jake Wharton (@JakeWharton) January 4, 2019
データベース周りにRoom他のライブラリをご利用の方も試してみてはどうでしょうか。
square/sqldelight: Generates typesafe Kotlin APIs from SQL
SQLDelight は、以下のようなSQLステートメントからデータベース、テーブル、タイプセーフなAPIを作成できます。
HockeyPlayer.sq
CREATE TABLE hockeyPlayer (
player_number INTEGER NOT NULL,
full_name TEXT NOT NULL
);
CREATE INDEX hockeyPlayer_full_name ON hockeyPlayer(full_name);
INSERT INTO hockeyPlayer (player_number, full_name)
VALUES (15, 'Ryan Getzlaf');
selectAll:
SELECT *
FROM hockeyPlayer;
insert:
INSERT INTO hockeyPlayer(player_number, full_name)
VALUES (?, ?);
定義したAPIは以下のように利用できます。
val driver = AndroidSqliteDriver(Database.Schema, this, "test.db")
val database = Database(driver)
val playerQueries = database.hockeyPlayerQueries
// selectAll
println(playerQueries.selectAll().executeAsList())
// Prints [HockeyPlayer.Impl(15, "Ryan Getzlaf")]
// insert
playerQueries.insert(player_number = 10, full_name = "Corey Perry")
playerQueries.insert(player_number = 999, full_name = "フグ田 サザエ")
// selectAll
println(playerQueries.selectAll().executeAsList())
// Prints [HockeyPlayer.Impl(15, "Ryan Getzlaf"), HockeyPlayer.Impl(10, "Corey Perry")]
利用前の build で build/generated/ 以下に書き出されますが、gradle のバージョンが限定されるように見えました。何か設定が足りないのかもしれません。
gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
実際サンプルを動かす風景。
利用方法など今回バージョン1.0 で変わっているようなので、
数回に渡って実装に利用できるとこまでやってみたいと思います。
SQDelight の データベースバージョン
Reddit: Announcing SQLDelight 1.0 – Alec Strong – Medium
SQLDelight 1.0 使い方 #2