From a9e9df481205d610f0dd336717769e1b70e81d1c Mon Sep 17 00:00:00 2001 From: Dominique Padiou <5765435+dpad85@users.noreply.github.com> Date: Wed, 3 Apr 2024 14:35:25 +0200 Subject: [PATCH 1/4] Upgrade to sqldelight v2.0.1 and update package name Package/group is now app.cash.sqldelight. --- build.gradle.kts | 2 +- buildSrc/src/main/kotlin/Versions.kt | 2 +- phoenix-android/build.gradle.kts | 2 +- .../utils/LegacyMigrationHelperTest.kt | 6 +-- phoenix-legacy/build.gradle.kts | 13 ++++--- .../fr/acinq/phoenix/legacy/db/AppDb.kt | 4 +- phoenix-shared/build.gradle.kts | 38 ++++++++++--------- .../fr/acinq/phoenix/db/androidDbFactory.kt | 6 +-- .../phoenix/db/SqliteChannelsDatabaseTest.kt | 4 +- .../fr.acinq.phoenix.db/ChannelsDatabase.sq | 2 + .../kotlin/fr.acinq.phoenix/db/DbFactory.kt | 2 +- .../kotlin/fr.acinq.phoenix/db/SqliteAppDb.kt | 7 ++-- .../fr.acinq.phoenix/db/SqliteChannelsDb.kt | 2 +- .../fr.acinq.phoenix/db/SqlitePaymentsDb.kt | 7 ++-- .../db/notifications/NotificationsQueries.kt | 8 ++-- .../db/payments/IncomingQueries.kt | 9 +++-- .../db/payments/LinkTxToPaymentQueries.kt | 8 ++-- .../db/payments/OutgoingQueries.kt | 2 +- .../utils/extensions/QueryExtensions.kt | 20 ---------- .../phoenix/db/SqliteChannelsDatabaseTest.kt | 2 +- .../phoenix/db/SqlitePaymentsDatabaseTest.kt | 2 +- .../kotlin/fr/acinq/phoenix/db/CloudKitDb.kt | 2 +- .../fr/acinq/phoenix/db/iosDbFactory.kt | 18 ++++----- .../phoenix/db/SqliteChannelsDatabaseTest.kt | 6 +-- 24 files changed, 81 insertions(+), 93 deletions(-) delete mode 100644 phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/utils/extensions/QueryExtensions.kt diff --git a/build.gradle.kts b/build.gradle.kts index abfea6b10..08537a3fe 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ buildscript { classpath("com.android.tools.build:gradle:7.4.2") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}") classpath("org.jetbrains.kotlin:kotlin-serialization:${Versions.kotlin}") - classpath("com.squareup.sqldelight:gradle-plugin:${Versions.sqlDelight}") + classpath("app.cash.sqldelight:gradle-plugin:${Versions.sqlDelight}") if (System.getProperty("includeAndroid")?.toBoolean() == true) { // Plugins for the legacy android app diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 3cf028a18..f314e53aa 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -6,7 +6,7 @@ object Versions { const val kotlin = "1.9.22" const val ktor = "2.3.7" - const val sqlDelight = "1.5.5" + const val sqlDelight = "2.0.1" const val slf4j = "1.7.30" const val junit = "4.13" diff --git a/phoenix-android/build.gradle.kts b/phoenix-android/build.gradle.kts index 7032cc19e..b71a96d1e 100644 --- a/phoenix-android/build.gradle.kts +++ b/phoenix-android/build.gradle.kts @@ -140,7 +140,7 @@ dependencies { implementation("com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava") testImplementation("junit:junit:${Versions.junit}") - testImplementation("com.squareup.sqldelight:sqlite-driver:${Versions.sqlDelight}") + testImplementation("app.cash.sqldelight:sqlite-driver:${Versions.sqlDelight}") androidTestImplementation("androidx.test.ext:junit:1.1.4") androidTestImplementation("androidx.test.espresso:espresso-core:${Versions.Android.espresso}") } diff --git a/phoenix-android/src/test/kotlin/fr/acinq/phoenix/utils/LegacyMigrationHelperTest.kt b/phoenix-android/src/test/kotlin/fr/acinq/phoenix/utils/LegacyMigrationHelperTest.kt index 077f48bc7..5d12dccdf 100644 --- a/phoenix-android/src/test/kotlin/fr/acinq/phoenix/utils/LegacyMigrationHelperTest.kt +++ b/phoenix-android/src/test/kotlin/fr/acinq/phoenix/utils/LegacyMigrationHelperTest.kt @@ -16,9 +16,9 @@ package fr.acinq.phoenix.utils -import com.squareup.sqldelight.EnumColumnAdapter -import com.squareup.sqldelight.db.SqlDriver -import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver +import app.cash.sqldelight.EnumColumnAdapter +import app.cash.sqldelight.db.SqlDriver +import app.cash.sqldelight.sqlite.driver.JdbcSqliteDriver import fr.acinq.bitcoin.ByteVector32 import fr.acinq.bitcoin.Chain import fr.acinq.bitcoin.PublicKey diff --git a/phoenix-legacy/build.gradle.kts b/phoenix-legacy/build.gradle.kts index b397ef7cc..06e6f27df 100644 --- a/phoenix-legacy/build.gradle.kts +++ b/phoenix-legacy/build.gradle.kts @@ -7,7 +7,7 @@ plugins { id("kotlin-parcelize") id("androidx.navigation.safeargs.kotlin") id("com.google.gms.google-services") - id("com.squareup.sqldelight") + id("app.cash.sqldelight") id("kotlinx-serialization") } @@ -69,10 +69,11 @@ android { } sqldelight { - database("Database") { - packageName = "fr.acinq.phoenix.legacy.db" - sourceFolders = listOf("sqldelight") - schemaOutputDirectory = file("src/main/sqldelight/databases") + databases { + create("Database") { + packageName.set("fr.acinq.phoenix.legacy.db") + srcDirs.from("src/main/sqldelight") + } } } @@ -110,7 +111,7 @@ dependencies { implementation("com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava") // SQLDelight - implementation("com.squareup.sqldelight:android-driver:${Versions.sqlDelight}") + implementation("app.cash.sqldelight:android-driver:${Versions.sqlDelight}") // logging implementation("org.slf4j:slf4j-api:${Versions.slf4j}") diff --git a/phoenix-legacy/src/main/kotlin/fr/acinq/phoenix/legacy/db/AppDb.kt b/phoenix-legacy/src/main/kotlin/fr/acinq/phoenix/legacy/db/AppDb.kt index 0d1f5c72d..de05c8cdf 100644 --- a/phoenix-legacy/src/main/kotlin/fr/acinq/phoenix/legacy/db/AppDb.kt +++ b/phoenix-legacy/src/main/kotlin/fr/acinq/phoenix/legacy/db/AppDb.kt @@ -17,8 +17,8 @@ package fr.acinq.phoenix.legacy.db import android.content.Context -import com.squareup.sqldelight.EnumColumnAdapter -import com.squareup.sqldelight.android.AndroidSqliteDriver +import app.cash.sqldelight.EnumColumnAdapter +import app.cash.sqldelight.driver.android.AndroidSqliteDriver object AppDb { @Volatile diff --git a/phoenix-shared/build.gradle.kts b/phoenix-shared/build.gradle.kts index 06ffaef00..004d5c53c 100644 --- a/phoenix-shared/build.gradle.kts +++ b/phoenix-shared/build.gradle.kts @@ -4,7 +4,7 @@ import java.io.ByteArrayOutputStream plugins { kotlin("multiplatform") id("kotlinx-serialization") - id("com.squareup.sqldelight") + id("app.cash.sqldelight") if (System.getProperty("includeAndroid")?.toBoolean() == true) { id("com.android.library") } @@ -93,8 +93,8 @@ kotlin { implementation("io.ktor:ktor-serialization-kotlinx-json:${Versions.ktor}") implementation("io.ktor:ktor-client-content-negotiation:${Versions.ktor}") // sqldelight - implementation("com.squareup.sqldelight:runtime:${Versions.sqlDelight}") - implementation("com.squareup.sqldelight:coroutines-extensions:${Versions.sqlDelight}") + implementation("app.cash.sqldelight:runtime:${Versions.sqlDelight}") + implementation("app.cash.sqldelight:coroutines-extensions:${Versions.sqlDelight}") } } @@ -115,7 +115,7 @@ kotlin { implementation("io.ktor:ktor-network:${Versions.ktor}") implementation("io.ktor:ktor-network-tls:${Versions.ktor}") implementation("io.ktor:ktor-client-android:${Versions.ktor}") - implementation("com.squareup.sqldelight:android-driver:${Versions.sqlDelight}") + implementation("app.cash.sqldelight:android-driver:${Versions.sqlDelight}") } } val androidUnitTest by getting { @@ -131,7 +131,7 @@ kotlin { else -> error("Unsupported OS $currentOs") } implementation("fr.acinq.secp256k1:secp256k1-kmp-jni-jvm-$target:${Versions.secp256k1}") - implementation("com.squareup.sqldelight:sqlite-driver:${Versions.sqlDelight}") + implementation("app.cash.sqldelight:sqlite-driver:${Versions.sqlDelight}") } } } @@ -140,13 +140,13 @@ kotlin { val iosMain by creating { dependencies { implementation("io.ktor:ktor-client-ios:${Versions.ktor}") - implementation("com.squareup.sqldelight:native-driver:${Versions.sqlDelight}") + implementation("app.cash.sqldelight:native-driver:${Versions.sqlDelight}") } } val iosTest by creating { dependencies { - implementation("com.squareup.sqldelight:native-driver:${Versions.sqlDelight}") + implementation("app.cash.sqldelight:native-driver:${Versions.sqlDelight}") } } @@ -157,17 +157,19 @@ kotlin { } sqldelight { - database("ChannelsDatabase") { - packageName = "fr.acinq.phoenix.db" - sourceFolders = listOf("channelsdb") - } - database("PaymentsDatabase") { - packageName = "fr.acinq.phoenix.db" - sourceFolders = listOf("paymentsdb") - } - database("AppDatabase") { - packageName = "fr.acinq.phoenix.db" - sourceFolders = listOf("appdb") + databases { + create("ChannelsDatabase") { + packageName.set("fr.acinq.phoenix.db") + srcDirs.from("src/commonMain/channelsdb") + } + create("PaymentsDatabase") { + packageName.set("fr.acinq.phoenix.db") + srcDirs.from("src/commonMain/paymentsdb") + } + create("AppDatabase") { + packageName.set("fr.acinq.phoenix.db") + srcDirs.from("src/commonMain/appdb") + } } } diff --git a/phoenix-shared/src/androidMain/kotlin/fr/acinq/phoenix/db/androidDbFactory.kt b/phoenix-shared/src/androidMain/kotlin/fr/acinq/phoenix/db/androidDbFactory.kt index 779bfa834..5f9f6d960 100644 --- a/phoenix-shared/src/androidMain/kotlin/fr/acinq/phoenix/db/androidDbFactory.kt +++ b/phoenix-shared/src/androidMain/kotlin/fr/acinq/phoenix/db/androidDbFactory.kt @@ -16,13 +16,13 @@ package fr.acinq.phoenix.db -import com.squareup.sqldelight.android.AndroidSqliteDriver -import com.squareup.sqldelight.db.SqlDriver +import app.cash.sqldelight.db.SqlDriver +import app.cash.sqldelight.driver.android.AndroidSqliteDriver import fr.acinq.bitcoin.Chain import fr.acinq.phoenix.utils.PlatformContext -import java.util.* actual fun createChannelsDbDriver(ctx: PlatformContext, chain: Chain, nodeIdHash: String): SqlDriver { + return AndroidSqliteDriver(ChannelsDatabase.Schema, ctx.applicationContext, "channels-${chain.name.lowercase()}-$nodeIdHash.sqlite") } diff --git a/phoenix-shared/src/androidUnitTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt b/phoenix-shared/src/androidUnitTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt index 4775b4899..ff5110525 100644 --- a/phoenix-shared/src/androidUnitTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt +++ b/phoenix-shared/src/androidUnitTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt @@ -16,8 +16,8 @@ package fr.acinq.phoenix.db -import com.squareup.sqldelight.db.SqlDriver -import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver +import app.cash.sqldelight.db.SqlDriver +import app.cash.sqldelight.sqlite.driver.JdbcSqliteDriver actual fun testChannelsDriver(): SqlDriver { val driver: SqlDriver = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY) diff --git a/phoenix-shared/src/commonMain/channelsdb/fr.acinq.phoenix.db/ChannelsDatabase.sq b/phoenix-shared/src/commonMain/channelsdb/fr.acinq.phoenix.db/ChannelsDatabase.sq index 2999637e6..786ac0030 100644 --- a/phoenix-shared/src/commonMain/channelsdb/fr.acinq.phoenix.db/ChannelsDatabase.sq +++ b/phoenix-shared/src/commonMain/channelsdb/fr.acinq.phoenix.db/ChannelsDatabase.sq @@ -1,3 +1,5 @@ +import kotlin.Boolean; + PRAGMA foreign_keys = 1; -- channels table diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/DbFactory.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/DbFactory.kt index f1cb2acd8..da5127505 100644 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/DbFactory.kt +++ b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/DbFactory.kt @@ -16,7 +16,7 @@ package fr.acinq.phoenix.db -import com.squareup.sqldelight.db.SqlDriver +import app.cash.sqldelight.db.SqlDriver import fr.acinq.bitcoin.Chain import fr.acinq.phoenix.utils.PlatformContext diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqliteAppDb.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqliteAppDb.kt index 7f8e8ad54..2a9e6ae72 100644 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqliteAppDb.kt +++ b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqliteAppDb.kt @@ -1,9 +1,8 @@ package fr.acinq.phoenix.db -import com.squareup.sqldelight.EnumColumnAdapter -import com.squareup.sqldelight.db.SqlDriver -import com.squareup.sqldelight.runtime.coroutines.asFlow -import com.squareup.sqldelight.runtime.coroutines.mapToList +import app.cash.sqldelight.EnumColumnAdapter +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.db.SqlDriver import fr.acinq.lightning.utils.UUID import fr.acinq.lightning.utils.currentTimestampMillis import fr.acinq.phoenix.data.ExchangeRate diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqliteChannelsDb.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqliteChannelsDb.kt index 4a1f93ca4..4f410ea7a 100644 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqliteChannelsDb.kt +++ b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqliteChannelsDb.kt @@ -16,7 +16,7 @@ package fr.acinq.phoenix.db -import com.squareup.sqldelight.db.SqlDriver +import app.cash.sqldelight.db.SqlDriver import fr.acinq.bitcoin.ByteVector32 import fr.acinq.lightning.CltvExpiry import fr.acinq.lightning.channel.states.PersistedChannelState diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqlitePaymentsDb.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqlitePaymentsDb.kt index d73e09d8e..8da3e3e21 100644 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqlitePaymentsDb.kt +++ b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/SqlitePaymentsDb.kt @@ -16,10 +16,9 @@ package fr.acinq.phoenix.db -import co.touchlab.kermit.Logger -import com.squareup.sqldelight.EnumColumnAdapter -import com.squareup.sqldelight.db.SqlDriver -import com.squareup.sqldelight.runtime.coroutines.asFlow +import app.cash.sqldelight.EnumColumnAdapter +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.db.SqlDriver import fr.acinq.bitcoin.ByteVector32 import fr.acinq.bitcoin.Crypto import fr.acinq.bitcoin.TxId diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/notifications/NotificationsQueries.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/notifications/NotificationsQueries.kt index df0e2735c..c82fab40c 100644 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/notifications/NotificationsQueries.kt +++ b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/notifications/NotificationsQueries.kt @@ -16,13 +16,15 @@ package fr.acinq.phoenix.db.notifications -import com.squareup.sqldelight.runtime.coroutines.asFlow -import com.squareup.sqldelight.runtime.coroutines.mapToList +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList import fr.acinq.lightning.LiquidityEvents import fr.acinq.lightning.utils.UUID import fr.acinq.lightning.utils.currentTimestampMillis import fr.acinq.phoenix.data.Notification import fr.acinq.phoenix.db.AppDatabase +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map @@ -63,7 +65,7 @@ internal class NotificationsQueries(val database: AppDatabase) { * database (for example, to mark those notifications as read). */ fun listUnread(): Flow, Notification>>> { - return queries.listUnread().asFlow().mapToList().map { + return queries.listUnread().asFlow().mapToList(Dispatchers.IO).map { val notifs = it.mapNotNull { row -> val ids = row.grouped_ids.split(";").map { UUID.fromString(it) }.toSet() val notif = mapToNotification(row.id, row.type_version, row.data_json, row.max ?: 0, null) diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/IncomingQueries.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/IncomingQueries.kt index 1fedcf932..c7c97de90 100644 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/IncomingQueries.kt +++ b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/IncomingQueries.kt @@ -16,15 +16,16 @@ package fr.acinq.phoenix.db.payments -import com.squareup.sqldelight.runtime.coroutines.asFlow -import com.squareup.sqldelight.runtime.coroutines.mapToList +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList import fr.acinq.bitcoin.ByteVector32 import fr.acinq.bitcoin.byteVector32 -import fr.acinq.lightning.MilliSatoshi import fr.acinq.lightning.db.IncomingPayment import fr.acinq.lightning.utils.* import fr.acinq.phoenix.data.WalletPaymentId import fr.acinq.phoenix.db.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO import kotlinx.coroutines.flow.Flow class IncomingQueries(private val database: PaymentsDatabase) { @@ -131,7 +132,7 @@ class IncomingQueries(private val database: PaymentsDatabase) { } fun listAllNotConfirmed(): Flow> { - return queries.listAllNotConfirmed(::mapIncomingPayment).asFlow().mapToList() + return queries.listAllNotConfirmed(::mapIncomingPayment).asFlow().mapToList(Dispatchers.IO) } fun listExpiredPayments(fromCreatedAt: Long, toCreatedAt: Long): List { diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/LinkTxToPaymentQueries.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/LinkTxToPaymentQueries.kt index d36efe221..56263ab3f 100644 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/LinkTxToPaymentQueries.kt +++ b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/LinkTxToPaymentQueries.kt @@ -16,18 +16,20 @@ package fr.acinq.phoenix.db.payments -import com.squareup.sqldelight.runtime.coroutines.asFlow -import com.squareup.sqldelight.runtime.coroutines.mapToList +import app.cash.sqldelight.coroutines.asFlow +import app.cash.sqldelight.coroutines.mapToList import fr.acinq.bitcoin.TxId import fr.acinq.phoenix.data.WalletPaymentId import fr.acinq.phoenix.db.PaymentsDatabase +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO import kotlinx.coroutines.flow.* class LinkTxToPaymentQueries(val database: PaymentsDatabase) { private val linkTxQueries = database.linkTxToPaymentQueries fun listUnconfirmedTxs(): Flow> { - return linkTxQueries.listUnconfirmed().asFlow().mapToList() + return linkTxQueries.listUnconfirmed().asFlow().mapToList(Dispatchers.IO) } fun listWalletPaymentIdsForTx(txId: TxId): List { diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/OutgoingQueries.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/OutgoingQueries.kt index 4def43ee6..00be49bd1 100644 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/OutgoingQueries.kt +++ b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/db/payments/OutgoingQueries.kt @@ -16,7 +16,7 @@ package fr.acinq.phoenix.db.payments -import com.squareup.sqldelight.ColumnAdapter +import app.cash.sqldelight.ColumnAdapter import fr.acinq.bitcoin.ByteVector32 import fr.acinq.bitcoin.PublicKey import fr.acinq.bitcoin.utils.Either diff --git a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/utils/extensions/QueryExtensions.kt b/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/utils/extensions/QueryExtensions.kt deleted file mode 100644 index c44831028..000000000 --- a/phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/utils/extensions/QueryExtensions.kt +++ /dev/null @@ -1,20 +0,0 @@ -package fr.acinq.phoenix.utils.extensions - -import com.squareup.sqldelight.Query -import com.squareup.sqldelight.db.use - -enum class QueryExecution { - Continue, - Stop -} - -fun Query.execute(iterator: (T) -> QueryExecution) { - this.execute().use { cursor -> - while (cursor.next()) { - val row = this.mapper(cursor) - if (iterator(row) == QueryExecution.Stop) { - break - } - } - } -} \ No newline at end of file diff --git a/phoenix-shared/src/commonTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt b/phoenix-shared/src/commonTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt index 1f9b4e1f2..e12447d90 100644 --- a/phoenix-shared/src/commonTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt +++ b/phoenix-shared/src/commonTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt @@ -17,7 +17,7 @@ package fr.acinq.phoenix.db -import com.squareup.sqldelight.db.SqlDriver +import app.cash.sqldelight.db.SqlDriver import fr.acinq.bitcoin.ByteVector import fr.acinq.bitcoin.ByteVector32 import fr.acinq.lightning.CltvExpiry diff --git a/phoenix-shared/src/commonTest/kotlin/fr/acinq/phoenix/db/SqlitePaymentsDatabaseTest.kt b/phoenix-shared/src/commonTest/kotlin/fr/acinq/phoenix/db/SqlitePaymentsDatabaseTest.kt index 7749f904b..118e95976 100644 --- a/phoenix-shared/src/commonTest/kotlin/fr/acinq/phoenix/db/SqlitePaymentsDatabaseTest.kt +++ b/phoenix-shared/src/commonTest/kotlin/fr/acinq/phoenix/db/SqlitePaymentsDatabaseTest.kt @@ -16,7 +16,7 @@ package fr.acinq.phoenix.db -import com.squareup.sqldelight.db.SqlDriver +import app.cash.sqldelight.db.SqlDriver import fr.acinq.bitcoin.* import fr.acinq.bitcoin.utils.Either import fr.acinq.lightning.* diff --git a/phoenix-shared/src/iosMain/kotlin/fr/acinq/phoenix/db/CloudKitDb.kt b/phoenix-shared/src/iosMain/kotlin/fr/acinq/phoenix/db/CloudKitDb.kt index 893793087..76947875c 100644 --- a/phoenix-shared/src/iosMain/kotlin/fr/acinq/phoenix/db/CloudKitDb.kt +++ b/phoenix-shared/src/iosMain/kotlin/fr/acinq/phoenix/db/CloudKitDb.kt @@ -1,6 +1,6 @@ package fr.acinq.phoenix.db -import com.squareup.sqldelight.runtime.coroutines.asFlow +import app.cash.sqldelight.coroutines.asFlow import fr.acinq.lightning.db.* import fr.acinq.lightning.utils.currentTimestampMillis import fr.acinq.phoenix.data.WalletPaymentFetchOptions diff --git a/phoenix-shared/src/iosMain/kotlin/fr/acinq/phoenix/db/iosDbFactory.kt b/phoenix-shared/src/iosMain/kotlin/fr/acinq/phoenix/db/iosDbFactory.kt index 7a7ef298e..12ec20df2 100644 --- a/phoenix-shared/src/iosMain/kotlin/fr/acinq/phoenix/db/iosDbFactory.kt +++ b/phoenix-shared/src/iosMain/kotlin/fr/acinq/phoenix/db/iosDbFactory.kt @@ -17,9 +17,9 @@ package fr.acinq.phoenix.db import co.touchlab.sqliter.DatabaseConfiguration -import com.squareup.sqldelight.db.SqlDriver -import com.squareup.sqldelight.drivers.native.NativeSqliteDriver -import com.squareup.sqldelight.drivers.native.wrapConnection +import app.cash.sqldelight.db.SqlDriver +import app.cash.sqldelight.driver.native.NativeSqliteDriver +import app.cash.sqldelight.driver.native.wrapConnection import fr.acinq.bitcoin.Chain import fr.acinq.phoenix.utils.PlatformContext import fr.acinq.phoenix.utils.getDatabaseFilesDirectoryPath @@ -38,7 +38,7 @@ actual fun createChannelsDbDriver( val dbDir = getDatabaseFilesDirectoryPath(ctx) val configuration = DatabaseConfiguration( name = name, - version = schema.version, + version = schema.version.toInt(), extendedConfig = DatabaseConfiguration.Extended( basePath = dbDir, foreignKeyConstraints = true @@ -47,7 +47,7 @@ actual fun createChannelsDbDriver( wrapConnection(connection) { schema.create(it) } }, upgrade = { connection, oldVersion, newVersion -> - wrapConnection(connection) { schema.migrate(it, oldVersion, newVersion) } + wrapConnection(connection) { schema.migrate(it, oldVersion.toLong(), newVersion.toLong()) } } ) return NativeSqliteDriver(configuration) @@ -64,7 +64,7 @@ actual fun createPaymentsDbDriver( val dbDir = getDatabaseFilesDirectoryPath(ctx) val configuration = DatabaseConfiguration( name = name, - version = schema.version, + version = schema.version.toInt(), extendedConfig = DatabaseConfiguration.Extended( basePath = dbDir, foreignKeyConstraints = true @@ -73,7 +73,7 @@ actual fun createPaymentsDbDriver( wrapConnection(connection) { schema.create(it) } }, upgrade = { connection, oldVersion, newVersion -> - wrapConnection(connection) { schema.migrate(it, oldVersion, newVersion) } + wrapConnection(connection) { schema.migrate(it, oldVersion.toLong(), newVersion.toLong()) } } ) return NativeSqliteDriver(configuration) @@ -88,7 +88,7 @@ actual fun createAppDbDriver( val dbDir = getDatabaseFilesDirectoryPath(ctx) val configuration = DatabaseConfiguration( name = name, - version = schema.version, + version = schema.version.toInt(), extendedConfig = DatabaseConfiguration.Extended( basePath = dbDir, foreignKeyConstraints = true @@ -97,7 +97,7 @@ actual fun createAppDbDriver( wrapConnection(connection) { schema.create(it) } }, upgrade = { connection, oldVersion, newVersion -> - wrapConnection(connection) { schema.migrate(it, oldVersion, newVersion) } + wrapConnection(connection) { schema.migrate(it, oldVersion.toLong(), newVersion.toLong()) } } ) return NativeSqliteDriver(configuration) diff --git a/phoenix-shared/src/iosTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt b/phoenix-shared/src/iosTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt index ef7e3015b..1b0570111 100644 --- a/phoenix-shared/src/iosTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt +++ b/phoenix-shared/src/iosTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt @@ -17,9 +17,9 @@ package fr.acinq.phoenix.db import co.touchlab.sqliter.DatabaseConfiguration -import com.squareup.sqldelight.db.SqlDriver -import com.squareup.sqldelight.drivers.native.NativeSqliteDriver -import com.squareup.sqldelight.drivers.native.wrapConnection +import app.cash.sqldelight.db.SqlDriver +import app.cash.sqldelight.drivers.native.NativeSqliteDriver +import app.cash.sqldelight.drivers.native.wrapConnection import fr.acinq.lightning.Lightning import fr.acinq.phoenix.utils.PlatformContext import fr.acinq.phoenix.utils.getDatabaseFilesDirectoryPath From 4f277c387293da273713ba7bc4da589eb7f36167 Mon Sep 17 00:00:00 2001 From: Robbie Hanson <304604+robbiehanson@users.noreply.github.com> Date: Wed, 3 Apr 2024 15:41:22 -0500 Subject: [PATCH 2/4] Fixing some iOS compilation issues --- .../phoenix/db/SqliteChannelsDatabaseTest.kt | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/phoenix-shared/src/iosTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt b/phoenix-shared/src/iosTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt index 1b0570111..87ea1c194 100644 --- a/phoenix-shared/src/iosTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt +++ b/phoenix-shared/src/iosTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt @@ -18,8 +18,8 @@ package fr.acinq.phoenix.db import co.touchlab.sqliter.DatabaseConfiguration import app.cash.sqldelight.db.SqlDriver -import app.cash.sqldelight.drivers.native.NativeSqliteDriver -import app.cash.sqldelight.drivers.native.wrapConnection +import app.cash.sqldelight.driver.native.NativeSqliteDriver +import app.cash.sqldelight.driver.native.wrapConnection import fr.acinq.lightning.Lightning import fr.acinq.phoenix.utils.PlatformContext import fr.acinq.phoenix.utils.getDatabaseFilesDirectoryPath @@ -40,7 +40,7 @@ actual fun testChannelsDriver(): SqlDriver { val dbDir = getDatabaseFilesDirectoryPath(PlatformContext()) val configuration = DatabaseConfiguration( name = name, - version = schema.version, + version = schema.version.toInt(), extendedConfig = DatabaseConfiguration.Extended( basePath = dbDir, foreignKeyConstraints = true // <= official solution doesn't work :( @@ -49,7 +49,13 @@ actual fun testChannelsDriver(): SqlDriver { wrapConnection(connection) { schema.create(it) } }, upgrade = { connection, oldVersion, newVersion -> - wrapConnection(connection) { schema.migrate(it, oldVersion, newVersion) } + wrapConnection(connection) { + schema.migrate( + driver = it, + oldVersion = oldVersion.toLong(), + newVersion = newVersion.toLong() + ) + } } ) return NativeSqliteDriver(configuration) @@ -66,7 +72,7 @@ actual fun testPaymentsDriver(): SqlDriver { val dbDir = getDatabaseFilesDirectoryPath(PlatformContext()) val configuration = DatabaseConfiguration( name = name, - version = schema.version, + version = schema.version.toInt(), extendedConfig = DatabaseConfiguration.Extended( basePath = dbDir, foreignKeyConstraints = true // <= official solution doesn't work :( @@ -75,7 +81,13 @@ actual fun testPaymentsDriver(): SqlDriver { wrapConnection(connection) { schema.create(it) } }, upgrade = { connection, oldVersion, newVersion -> - wrapConnection(connection) { schema.migrate(it, oldVersion, newVersion) } + wrapConnection(connection) { + schema.migrate( + driver = it, + oldVersion = oldVersion.toLong(), + newVersion = newVersion.toLong() + ) + } } ) return NativeSqliteDriver(configuration) From 7522733959b65582e33b9fba63edcf63cc60348a Mon Sep 17 00:00:00 2001 From: Dominique Padiou <5765435+dpad85@users.noreply.github.com> Date: Thu, 4 Apr 2024 14:18:11 +0200 Subject: [PATCH 3/4] (android) Bump phoenix-shared sdk target, and fix test import --- phoenix-shared/build.gradle.kts | 3 +-- .../kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/phoenix-shared/build.gradle.kts b/phoenix-shared/build.gradle.kts index 004d5c53c..03250900f 100644 --- a/phoenix-shared/build.gradle.kts +++ b/phoenix-shared/build.gradle.kts @@ -176,10 +176,9 @@ sqldelight { if (includeAndroid) { extensions.configure("android") { namespace = "fr.acinq.phoenix.shared" - compileSdk = 33 + compileSdk = 34 defaultConfig { minSdk = 26 - targetSdk = 33 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/phoenix-shared/src/androidUnitTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt b/phoenix-shared/src/androidUnitTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt index ff5110525..01771e7df 100644 --- a/phoenix-shared/src/androidUnitTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt +++ b/phoenix-shared/src/androidUnitTest/kotlin/fr/acinq/phoenix/db/SqliteChannelsDatabaseTest.kt @@ -17,7 +17,7 @@ package fr.acinq.phoenix.db import app.cash.sqldelight.db.SqlDriver -import app.cash.sqldelight.sqlite.driver.JdbcSqliteDriver +import app.cash.sqldelight.driver.jdbc.sqlite.JdbcSqliteDriver actual fun testChannelsDriver(): SqlDriver { val driver: SqlDriver = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY) From af9d9191d749c2c2a0c2c27ba24f861379e9209e Mon Sep 17 00:00:00 2001 From: Dominique Padiou <5765435+dpad85@users.noreply.github.com> Date: Fri, 17 May 2024 15:58:33 +0200 Subject: [PATCH 4/4] (ios) Fix compilation error --- phoenix-ios/phoenix-ios/kotlin/KotlinExtensions+Other.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phoenix-ios/phoenix-ios/kotlin/KotlinExtensions+Other.swift b/phoenix-ios/phoenix-ios/kotlin/KotlinExtensions+Other.swift index 8c0afd971..fe238e33e 100644 --- a/phoenix-ios/phoenix-ios/kotlin/KotlinExtensions+Other.swift +++ b/phoenix-ios/phoenix-ios/kotlin/KotlinExtensions+Other.swift @@ -229,7 +229,7 @@ extension MnemonicLanguage { let iterator = all.iterator() while iterator.hasNext() { - if let lang = iterator.next_() as? MnemonicLanguage { + if let lang = iterator.next() as? MnemonicLanguage { if lang.code.caseInsensitiveCompare(code) == .orderedSame { return lang } @@ -247,7 +247,7 @@ extension MnemonicLanguage { let iterator = all.iterator() while iterator.hasNext() { - if let lang = iterator.next_() as? MnemonicLanguage { + if let lang = iterator.next() as? MnemonicLanguage { result.append(lang) } }