Skip to content

Commit 982f7a8

Browse files
authored
Add extensions to make it easier to specify the absolute path of the db file (#21)
1 parent 5c60a69 commit 982f7a8

File tree

5 files changed

+62
-4
lines changed

5 files changed

+62
-4
lines changed

README.md

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,51 @@ the easiest way to get started is to use the `AndroidxSqliteDriver` factory whic
3434
Database(
3535
AndroidxSqliteDriver(
3636
driver = BundledSQLiteDriver(),
37-
type = AndroidxSqliteDatabaseType.File("my.db"),
37+
type = AndroidxSqliteDatabaseType.File("<absolute path to db file>"),
3838
schema = Database.Schema,
3939
)
4040
)
4141
```
4242

43-
If you want to create and configure driver yourself you can construct the `AndroidxSqliteDriver` directly.
43+
on Android and JVM you can pass a `File`:
44+
45+
```kotlin
46+
Database(
47+
AndroidxSqliteDriver(
48+
driver = BundledSQLiteDriver(),
49+
type = AndroidxSqliteDatabaseType.File(File("my.db")),
50+
schema = Database.Schema,
51+
)
52+
)
53+
```
54+
55+
and on Android you can pass a `Context` to create the file in the app's database directory:
56+
57+
```kotlin
58+
Database(
59+
AndroidxSqliteDriver(
60+
driver = BundledSQLiteDriver(),
61+
type = AndroidxSqliteDatabaseType.File(context, "my.db"),
62+
schema = Database.Schema,
63+
)
64+
)
65+
```
66+
67+
If you want to provide `OpenFlags` to the bundled or native driver, you can use:
68+
69+
```kotlin
70+
Database(
71+
AndroidxSqliteDriver(
72+
createConnection = { name ->
73+
BundledSQLiteDriver().open(name, SQLITE_OPEN_READWRITE or SQLITE_OPEN_CREATE)
74+
},
75+
type = AndroidxSqliteDatabaseType.File("<absolute path to db file>"),
76+
schema = Database.Schema,
77+
)
78+
)
79+
```
80+
81+
If you want to create and configure the driver yourself, you can construct the `AndroidxSqliteDriver` directly.
4482

4583
[AndroidX Kotlin Multiplatform SQLite]: https://developer.android.com/kotlin/multiplatform/sqlite
4684
[SQLDelight]: https://github.com/sqldelight/sqldelight
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.eygraber.sqldelight.androidx.driver
2+
3+
import android.content.Context
4+
import java.io.File as JavaFile
5+
6+
public fun AndroidxSqliteDatabaseType.File(
7+
context: Context,
8+
name: String,
9+
): AndroidxSqliteDatabaseType.File = AndroidxSqliteDatabaseType.File(context.getDatabasePath(name).absolutePath)
10+
11+
public fun AndroidxSqliteDatabaseType.File(
12+
file: JavaFile,
13+
): AndroidxSqliteDatabaseType.File = AndroidxSqliteDatabaseType.File(file.absolutePath)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.eygraber.sqldelight.androidx.driver
22

33
public sealed interface AndroidxSqliteDatabaseType {
4-
public data class File(val filename: String) : AndroidxSqliteDatabaseType
4+
public data class File(val databaseFilePath: String) : AndroidxSqliteDatabaseType
55
public data object Memory : AndroidxSqliteDatabaseType
66
public data object Temporary : AndroidxSqliteDatabaseType
77
}

library/src/commonMain/kotlin/com/eygraber/sqldelight/androidx/driver/AndroidxSqliteDriver.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class AndroidxSqliteDriver(
4949
private val connection by lazy {
5050
createConnection(
5151
when(databaseType) {
52-
is AndroidxSqliteDatabaseType.File -> databaseType.filename
52+
is AndroidxSqliteDatabaseType.File -> databaseType.databaseFilePath
5353
AndroidxSqliteDatabaseType.Memory -> ":memory:"
5454
AndroidxSqliteDatabaseType.Temporary -> ""
5555
},
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.eygraber.sqldelight.androidx.driver
2+
3+
import java.io.File as JavaFile
4+
5+
public fun AndroidxSqliteDatabaseType.File(
6+
file: JavaFile,
7+
): AndroidxSqliteDatabaseType.File = AndroidxSqliteDatabaseType.File(file.absolutePath)

0 commit comments

Comments
 (0)