Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 40 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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("<absolute path to db 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("<absolute path to db 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
Original file line number Diff line number Diff line change
@@ -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)
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 -> ""
},
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
Loading