Skip to content

Commit 41b6793

Browse files
committed
Merge branch 'basher/onopen' of https://github.com/plangrid/SQLiter into plangrid-basher/onopen
2 parents acfda4b + cf8fe37 commit 41b6793

File tree

3 files changed

+35
-11
lines changed

3 files changed

+35
-11
lines changed

SQLiter/src/commonMain/kotlin/co/touchlab/sqliter/DatabaseConfiguration.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ data class DatabaseConfiguration(
2929
val inMemory: Boolean = false,
3030
val basePath: String? = null,
3131
val key: String? = null,
32-
val rekey: String? = null
32+
val rekey: String? = null,
33+
val configConnection: (DatabaseConnection, Long) -> Unit = { _, _ -> }
3334
) {
3435
init {
3536
checkFilename(name)

SQLiter/src/nativeCommonMain/kotlin/co/touchlab/sqliter/NativeDatabaseManager.kt

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,18 @@ class NativeDatabaseManager(private val path:String,
4545
lock.lock()
4646

4747
try {
48-
val conn = NativeDatabaseConnection(this, nativeOpen(
49-
path,
50-
CREATE_IF_NECESSARY,
51-
"sqliter",
52-
false,
53-
false,
54-
-1,
55-
-1,
56-
configuration.busyTimeout
57-
))
48+
val connectionPtrArg = nativeOpen(
49+
path,
50+
CREATE_IF_NECESSARY,
51+
"sqliter",
52+
false,
53+
false,
54+
-1,
55+
-1,
56+
configuration.busyTimeout
57+
)
58+
val conn = NativeDatabaseConnection(this, connectionPtrArg)
59+
configuration.configConnection(conn, connectionPtrArg)
5860

5961
if (configuration.rekey == null) {
6062
configuration.key?.let { conn.setCipherKey(it) }

SQLiter/src/nativeCommonTest/kotlin/co/touchlab/sqliter/DatabaseConfigurationTest.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,27 @@ class DatabaseConfigurationTest : BaseDatabaseTest(){
7070
checkFilePath("ar st", null)
7171
}
7272

73+
@Test
74+
fun configConnection(){
75+
var called = false
76+
val config = DatabaseConfiguration(name = "configConnection", version = 1, create = { _ -> }, configConnection = { c, ptr ->
77+
assertNotEquals(0L, ptr)
78+
assertNotNull(c)
79+
called = true
80+
})
81+
82+
var conn: DatabaseConnection? = null
83+
try {
84+
val manager = createDatabaseManager(config)
85+
conn = manager.createMultiThreadedConnection()
86+
87+
assertTrue(called)
88+
} finally {
89+
conn?.close()
90+
DatabaseFileContext.deleteDatabase(config)
91+
}
92+
}
93+
7394
@Test
7495
fun journalModeSetting()
7596
{

0 commit comments

Comments
 (0)