diff --git a/README.md b/README.md index 8ee3872..17793e0 100644 --- a/README.md +++ b/README.md @@ -34,13 +34,51 @@ the easiest way to get started is to use the `AndroidxSqliteDriver` factory whic Database( AndroidxSqliteDriver( driver = BundledSQLiteDriver(), - type = AndroidxSqliteDatabaseType.File("my.db"), + type = AndroidxSqliteDatabaseType.File(""), schema = Database.Schema, ) ) ``` -If you want to create and configure driver yourself you can construct the `AndroidxSqliteDriver` directly. +on Android and JVM you can pass a `File`: + +```kotlin +Database( + AndroidxSqliteDriver( + driver = BundledSQLiteDriver(), + type = AndroidxSqliteDatabaseType.File(File("my.db")), + schema = Database.Schema, + ) +) +``` + +and on Android you can pass a `Context` to create the file in the app's database directory: + +```kotlin +Database( + AndroidxSqliteDriver( + driver = BundledSQLiteDriver(), + type = AndroidxSqliteDatabaseType.File(context, "my.db"), + schema = Database.Schema, + ) +) +``` + +If you want to provide `OpenFlags` to the bundled or native driver, you can use: + +```kotlin +Database( + AndroidxSqliteDriver( + createConnection = { name -> + BundledSQLiteDriver().open(name, SQLITE_OPEN_READWRITE or SQLITE_OPEN_CREATE) + }, + type = AndroidxSqliteDatabaseType.File(""), + schema = Database.Schema, + ) +) +``` + +If you want to create and configure the driver yourself, you can construct the `AndroidxSqliteDriver` directly. [AndroidX Kotlin Multiplatform SQLite]: https://developer.android.com/kotlin/multiplatform/sqlite [SQLDelight]: https://github.com/sqldelight/sqldelight diff --git a/library/src/androidMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.android.kt b/library/src/androidMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.android.kt new file mode 100644 index 0000000..c64b144 --- /dev/null +++ b/library/src/androidMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.android.kt @@ -0,0 +1,13 @@ +package com.eygraber.sqldelight.androidx.driver + +import android.content.Context +import java.io.File as JavaFile + +public fun AndroidxSqliteDatabaseType.File( + context: Context, + name: String, +): AndroidxSqliteDatabaseType.File = AndroidxSqliteDatabaseType.File(context.getDatabasePath(name).absolutePath) + +public fun AndroidxSqliteDatabaseType.File( + file: JavaFile, +): AndroidxSqliteDatabaseType.File = AndroidxSqliteDatabaseType.File(file.absolutePath) diff --git a/library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.kt b/library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.kt index 6f86556..4362342 100644 --- a/library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.kt +++ b/library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.kt @@ -1,7 +1,7 @@ package com.eygraber.sqldelight.androidx.driver public sealed interface AndroidxSqliteDatabaseType { - public data class File(val filename: String) : AndroidxSqliteDatabaseType + public data class File(val databaseFilePath: String) : AndroidxSqliteDatabaseType public data object Memory : AndroidxSqliteDatabaseType public data object Temporary : AndroidxSqliteDatabaseType } diff --git a/library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDriver.kt b/library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDriver.kt index 2083f1d..b9b5a31 100644 --- a/library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDriver.kt +++ b/library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDriver.kt @@ -49,7 +49,7 @@ public class AndroidxSqliteDriver( private val connection by lazy { createConnection( when(databaseType) { - is AndroidxSqliteDatabaseType.File -> databaseType.filename + is AndroidxSqliteDatabaseType.File -> databaseType.databaseFilePath AndroidxSqliteDatabaseType.Memory -> ":memory:" AndroidxSqliteDatabaseType.Temporary -> "" }, diff --git a/library/src/jvmMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.jvm.kt b/library/src/jvmMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.jvm.kt new file mode 100644 index 0000000..9f915ea --- /dev/null +++ b/library/src/jvmMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDatabaseType.jvm.kt @@ -0,0 +1,7 @@ +package com.eygraber.sqldelight.androidx.driver + +import java.io.File as JavaFile + +public fun AndroidxSqliteDatabaseType.File( + file: JavaFile, +): AndroidxSqliteDatabaseType.File = AndroidxSqliteDatabaseType.File(file.absolutePath)