Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade to sqldelight 2 #546

Merged
merged 4 commits into from
May 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion phoenix-android/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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}")
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions phoenix-ios/phoenix-ios/kotlin/KotlinExtensions+Other.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand All @@ -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)
}
}
Expand Down
13 changes: 7 additions & 6 deletions phoenix-legacy/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}

Expand Down Expand Up @@ -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")
}
}
}

Expand Down Expand Up @@ -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}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
41 changes: 21 additions & 20 deletions phoenix-shared/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}
Expand Down Expand Up @@ -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}")
}
}

Expand All @@ -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 {
Expand All @@ -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}")
}
}
}
Expand All @@ -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}")
}
}

Expand All @@ -157,27 +157,28 @@ 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")
}
}
}

if (includeAndroid) {
extensions.configure<com.android.build.gradle.LibraryExtension>("android") {
namespace = "fr.acinq.phoenix.shared"
compileSdk = 33
compileSdk = 34
defaultConfig {
minSdk = 26
targetSdk = 33
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.driver.jdbc.sqlite.JdbcSqliteDriver

actual fun testChannelsDriver(): SqlDriver {
val driver: SqlDriver = JdbcSqliteDriver(JdbcSqliteDriver.IN_MEMORY)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import kotlin.Boolean;

PRAGMA foreign_keys = 1;

-- channels table
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -63,7 +65,7 @@ internal class NotificationsQueries(val database: AppDatabase) {
* database (for example, to mark those notifications as read).
*/
fun listUnread(): Flow<List<Pair<Set<UUID>, 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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -131,7 +132,7 @@ class IncomingQueries(private val database: PaymentsDatabase) {
}

fun listAllNotConfirmed(): Flow<List<IncomingPayment>> {
return queries.listAllNotConfirmed(::mapIncomingPayment).asFlow().mapToList()
return queries.listAllNotConfirmed(::mapIncomingPayment).asFlow().mapToList(Dispatchers.IO)
}

fun listExpiredPayments(fromCreatedAt: Long, toCreatedAt: Long): List<IncomingPayment> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<List<ByteArray>> {
return linkTxQueries.listUnconfirmed().asFlow().mapToList()
return linkTxQueries.listUnconfirmed().asFlow().mapToList(Dispatchers.IO)
}

fun listWalletPaymentIdsForTx(txId: TxId): List<WalletPaymentId> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading