Skip to content

Commit c53cdb6

Browse files
committed
reorganize code to prepare for windows support
1 parent 22de742 commit c53cdb6

File tree

4 files changed

+21
-7
lines changed

4 files changed

+21
-7
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/NativeFileContext.kt renamed to SQLiter/src/appleMain/kotlin/co/touchlab/sqliter/DatabaseFileContext.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616

1717
package co.touchlab.sqliter
18-
1918
import co.touchlab.sqliter.internal.File
2019
import co.touchlab.sqliter.internal.FileFilter
2120
import platform.Foundation.NSApplicationSupportDirectory

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

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,18 @@
1414
* limitations under the License.
1515
*/
1616

17+
1718
package co.touchlab.sqliter
1819

1920
import co.touchlab.sqliter.concurrency.ConcurrentDatabaseConnection
2021
import co.touchlab.sqliter.concurrency.SingleThreadDatabaseConnection
21-
import platform.Foundation.NSLock
22+
import co.touchlab.stately.concurrency.Lock
2223
import kotlin.native.concurrent.AtomicInt
2324
import kotlin.native.concurrent.freeze
2425

2526
class NativeDatabaseManager(private val path:String,
2627
override val configuration: DatabaseConfiguration
27-
):DatabaseManager{
28+
):DatabaseManager{
2829
override fun createMultiThreadedConnection(): DatabaseConnection {
2930
return ConcurrentDatabaseConnection(createConnection()).freeze()
3031
}
@@ -33,7 +34,7 @@ class NativeDatabaseManager(private val path:String,
3334
return SingleThreadDatabaseConnection(createConnection())
3435
}
3536

36-
val lock = NSLock()
37+
val lock = Lock()
3738

3839
companion object {
3940
val CREATE_IF_NECESSARY = 0x10000000
@@ -58,13 +59,23 @@ class NativeDatabaseManager(private val path:String,
5859

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

74+
connectionCount.increment()
75+
6476
return conn
6577
}
6678
finally {
67-
connectionCount.increment()
6879
lock.unlock()
6980
}
7081
}

0 commit comments

Comments
 (0)