Gradle
`# Gradle
より詳細なカスタマイズのために、Gradle DSLを使用してデータベースを明示的に宣言できます。
SQLDelight 設定
databases
データベースを格納するコンテナです。SQLDelightは、指定された名前で各データベースを作成するように構成されます。
sqldelight {
databases {
create("MyDatabase") {
// ここにデータベース設定を記述します。
}
}
}sqldelight {
databases {
MyDatabase {
// ここにデータベース設定を記述します。
}
}
}linkSqlite
Type: Property<Boolean>
ネイティブターゲット向け。SQLiteを自動的にリンクするかどうかを決定します。 これは、プロジェクトがダイナミックフレームワークにコンパイルされる際に、SQLiteをリンクするために必要なメタデータを追加します(これはKMPの最近のバージョンでのデフォルトです)。
なお、スタティックフレームワークの場合、このフラグは効果がありません。 プロジェクトをインポートするXcodeビルドは、リンカフラグに-lsqlite3を追加する必要があります。 または、CocoaPodsプラグイン経由でsqlite3 podへのプロジェクト依存関係を追加します。 機能する可能性のあるもう一つのオプションは、CocoaPodsのspec.libraries設定にsqlite3を追加することです。例:Gradle Kotlin DSLの場合: extraSpecAttributes["libraries"] = "'c++', 'sqlite3'".
デフォルトはtrueです。
linkSqlite.set(true)linkSqlite = trueデータベース設定
packageName
Type: Property<String>
データベースクラスに使用されるパッケージ名です。
packageName.set("com.example.db")packageName = "com.example.db"srcDirs
Type: ConfigurableFileCollection
プラグインが.sqおよび.sqmファイルを探すフォルダのコレクションです。
デフォルトはsrc/[prefix]main/sqldelightで、接頭辞は適用されるKotlinプラグイン(例:マルチプラットフォームの場合はcommon)によって異なります。
srcDirs.setFrom("src/main/sqldelight")srcDirs = ['src/main/sqldelight']srcDirs(vararg objects: Any)
プラグインが.sqおよび.sqmファイルを探すオブジェクトのコレクションです。
srcDirs("src/main/sqldelight", "main/sqldelight")srcDirs('src/main/sqldelight', 'main/sqldelight')schemaOutputDirectory
Type: DirectoryProperty
.dbスキーマファイルをプロジェクトルートからの相対パスで格納するディレクトリです。 これらのファイルは、マイグレーションが最新のスキーマを持つデータベースを生成することを検証するために使用されます。
デフォルトはnullです。 もしnullの場合、マイグレーション検証タスクは作成されません。
schemaOutputDirectory.set(file("src/main/sqldelight/databases"))schemaOutputDirectory = file("src/main/sqldelight/databases")dependency
Type: Project
オプションで、他のGradleプロジェクトに対するスキーマ依存関係を(下記参照)指定できます。
dependency(project(":other-project"))dependency project(":other-project")dialect
Type: String or Provider<MinimalExternalModuleDependency>
ターゲットとするSQL方言です。方言はGradle依存関係を使用して選択されます。 これらの依存関係は、app.cash.sqldelight:{dialect module}:2.1.0のように指定できます。 利用可能な方言は以下を参照してください。
Androidプロジェクトの場合、SQLiteバージョンはminSdkに基づいて自動的に選択されます。 それ以外の場合はデフォルトでSQLite 3.18が使用されます。
利用可能な方言:
- HSQL:
hsql-dialect - MySQL:
mysql-dialect - PostgreSQL:
postgresql-dialect - SQLite 3.18:
sqlite-3-18-dialect - SQLite 3.24:
sqlite-3-24-dialect - SQLite 3.25:
sqlite-3-25-dialect - SQLite 3.30:
sqlite-3-30-dialect - SQLite 3.33:
sqlite-3-33-dialect - SQLite 3.35:
sqlite-3-35-dialect - SQLite 3.38:
sqlite-3-38-dialect
dialect("app.cash.sqldelight:sqlite-3-24-dialect:2.1.0")dialect 'app.cash.sqldelight:sqlite-3-24-dialect:2.1.0'verifyMigrations
Type: Property<Boolean>
trueに設定されている場合、マイグレーションファイルにエラーがあるとビルドプロセス中に失敗します。
デフォルトはfalseです。
verifyMigrations.set(true)verifyMigrations = truetreatNullAsUnknownForEquality
Type: Property<Boolean>
trueに設定されている場合、SQLDelightはISを使用する際にnullableな型付き値との等価比較を置換しません。
デフォルトはfalseです。
treatNullAsUnknownForEquality.set(true)treatNullAsUnknownForEquality = truegenerateAsync
Type: Property<Boolean>
trueに設定されている場合、SQLDelightは非同期ドライバーで使用するためのサスペンディングクエリメソッドを生成します。
デフォルトはfalseです。
generateAsync.set(true)generateAsync = truederiveSchemaFromMigrations
Type: Property<Boolean>
trueに設定されている場合、データベースのスキーマは、各マイグレーションが適用されたかのように.sqmファイルから導出されます。 falseの場合、スキーマは.sqファイルで定義されます。
デフォルトはfalseです。
deriveSchemaFromMigrations.set(true)deriveSchemaFromMigrations = trueスキーマの依存関係
別のモジュールに対するスキーマの依存関係を指定できます。
// project-a/build.gradle.kts
sqldelight {
databases {
create("MyDatabase") {
packageName.set("com.example.projecta")
dependency(project(":ProjectB"))
}
}
}// project-a/build.gradle
sqldelight {
databases {
MyDatabase {
packageName = "com.example.projecta"
dependency project(":ProjectB")
}
}
}これは、ProjectB内のMyDatabaseを探し、コンパイル時にそのスキーマを含めます。これが機能するためには、ProjectBに同じ名前(この場合はMyDatabase)のデータベースがあり、しかし異なるパッケージで生成される必要があります。以下はProjectBのGradle設定の例です。
// project-b/build.gradle.kts
sqldelight {
databases {
// Same database name
create("MyDatabase") {
package = "com.example.projectb"
}
}
}// project-b/build.gradle
sqldelight {
databases {
// Same database name
MyDatabase {
package = "com.example.projectb"
}
}
}deriveSchemaFromMigrations = trueを使用する場合、このモジュールに依存するすべてのモジュールもこの機能を有効にする必要があります。`
