Skip to content

Commit 411f31f

Browse files
authored
Merge pull request #73 from DanielRBaird/daniel/exposeDbPointer
Expose database pointer
2 parents 5f42182 + 7803e2b commit 411f31f

File tree

4 files changed

+10
-1
lines changed

4 files changed

+10
-1
lines changed

sqliter-driver/src/nativeCommonMain/kotlin/co/touchlab/sqliter/DatabaseConnection.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package co.touchlab.sqliter
1818

19+
import co.touchlab.sqliter.interop.SqliteDatabasePointer
20+
1921
interface DatabaseConnection {
2022
fun rawExecSql(sql: String)
2123
fun createStatement(sql: String): Statement
@@ -24,6 +26,7 @@ interface DatabaseConnection {
2426
fun endTransaction()
2527
fun close()
2628
val closed:Boolean
29+
fun getDbPointer(): SqliteDatabasePointer
2730
}
2831

2932
fun <R> DatabaseConnection.withStatement(sql: String, proc: Statement.() -> R): R {

sqliter-driver/src/nativeCommonMain/kotlin/co/touchlab/sqliter/concurrency/ConcurrentDatabaseConnection.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import co.touchlab.sqliter.Cursor
2020
import co.touchlab.sqliter.DatabaseConnection
2121
import co.touchlab.sqliter.FieldType
2222
import co.touchlab.sqliter.Statement
23+
import co.touchlab.sqliter.interop.SqliteDatabasePointer
2324

2425
internal class ConcurrentDatabaseConnection(private val delegateConnection: DatabaseConnection) : DatabaseConnection {
2526
private val accessLock = Lock()
@@ -40,6 +41,8 @@ internal class ConcurrentDatabaseConnection(private val delegateConnection: Data
4041
override val closed: Boolean
4142
get() = delegateConnection.closed
4243

44+
override fun getDbPointer(): SqliteDatabasePointer = delegateConnection.getDbPointer()
45+
4346
inner class ConcurrentCursor(private val delegateCursor: Cursor) : Cursor {
4447
override fun next(): Boolean = accessLock.withLock { delegateCursor.next() }
4548

sqliter-driver/src/nativeCommonMain/kotlin/co/touchlab/sqliter/interop/SqliteDatabase.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import cnames.structs.sqlite3_stmt
55
import kotlinx.cinterop.*
66
import co.touchlab.sqliter.sqlite3.*
77

8-
internal class SqliteDatabase(path:String, label:String, val logger: Logger, private val verboseDataCalls: Boolean, val dbPointer:SqliteDatabasePointer) {
8+
internal class SqliteDatabase(path: String, label: String, val logger: Logger, private val verboseDataCalls: Boolean, val dbPointer: SqliteDatabasePointer) {
99
val config = SqliteDatabaseConfig(path, label)
1010

1111
fun prepareStatement(sqlString: String): SqliteStatement {

sqliter-driver/src/nativeCommonMain/kotlin/co/touchlab/sqliter/native/NativeDatabaseConnection.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import co.touchlab.sqliter.*
2020
import co.touchlab.sqliter.concurrency.Lock
2121
import co.touchlab.sqliter.concurrency.withLock
2222
import co.touchlab.sqliter.interop.SqliteDatabase
23+
import co.touchlab.sqliter.interop.SqliteDatabasePointer
2324
import co.touchlab.sqliter.util.maybeFreeze
2425
import kotlin.native.concurrent.AtomicInt
2526
import kotlin.native.concurrent.AtomicReference
@@ -86,6 +87,8 @@ class NativeDatabaseConnection internal constructor(
8687
override val closed: Boolean
8788
get() = closedFlag.value != 0
8889

90+
override fun getDbPointer(): SqliteDatabasePointer = sqliteDatabase.dbPointer
91+
8992
fun migrateIfNeeded(
9093
create: (DatabaseConnection) -> Unit,
9194
upgrade: (DatabaseConnection, Int, Int) -> Unit,

0 commit comments

Comments
 (0)