Skip to content

Commit c152f2c

Browse files
authored
Merge pull request #11 from plangrid/daniel/splitOutAppleCode_independent
Reorganize code to prepare for windows support
2 parents 8e90bba + f390b5a commit c152f2c

File tree

4 files changed

+20
-6
lines changed

4 files changed

+20
-6
lines changed

SQLiter/build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,14 @@ kotlin {
9595
nativeCommonMain { }
9696
nativeCommonTest { }
9797

98-
configure([iosX64Main, iosArm64Main, macosMain, iosArm32Main]) {
98+
appleMain {
9999
dependsOn nativeCommonMain
100100
}
101101

102+
configure([iosX64Main, iosArm64Main, macosMain, iosArm32Main]) {
103+
dependsOn appleMain
104+
}
105+
102106
configure([iosX64Test, iosArm64Test, macosTest, iosArm32Test]) {
103107
dependsOn nativeCommonTest
104108
}

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

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ package co.touchlab.sqliter
1818

1919
import co.touchlab.sqliter.concurrency.ConcurrentDatabaseConnection
2020
import co.touchlab.sqliter.concurrency.SingleThreadDatabaseConnection
21-
import platform.Foundation.NSLock
21+
import co.touchlab.stately.concurrency.Lock
2222
import kotlin.native.concurrent.AtomicInt
2323
import kotlin.native.concurrent.freeze
2424

2525
class NativeDatabaseManager(private val path:String,
2626
override val configuration: DatabaseConfiguration
27-
):DatabaseManager{
27+
):DatabaseManager{
2828
override fun createMultiThreadedConnection(): DatabaseConnection {
2929
return ConcurrentDatabaseConnection(createConnection()).freeze()
3030
}
@@ -33,7 +33,7 @@ class NativeDatabaseManager(private val path:String,
3333
return SingleThreadDatabaseConnection(createConnection())
3434
}
3535

36-
val lock = NSLock()
36+
val lock = Lock()
3737

3838
companion object {
3939
val CREATE_IF_NECESSARY = 0x10000000
@@ -58,13 +58,23 @@ class NativeDatabaseManager(private val path:String,
5858

5959
if(connectionCount.value == 0){
6060
conn.updateJournalMode(configuration.journalMode)
61-
conn.migrateIfNeeded(configuration.create, configuration.upgrade, configuration.version)
61+
62+
try {
63+
conn.migrateIfNeeded(configuration.create, configuration.upgrade, configuration.version)
64+
} catch (e: Exception) {
65+
66+
// If this failed, we have to close the connection or we will end up leaking it.
67+
println("attempted to run migration and failed. closing connection.")
68+
conn.close()
69+
throw e
70+
}
6271
}
6372

73+
connectionCount.increment()
74+
6475
return conn
6576
}
6677
finally {
67-
connectionCount.increment()
6878
lock.unlock()
6979
}
7080
}

0 commit comments

Comments
 (0)