feat: add search by nodeid and alias
This commit is contained in:
@@ -150,6 +150,10 @@ class PaymentCacheRepository(context: Context) {
|
||||
suspend fun containsPayment(checkingId: String): Boolean =
|
||||
dao.getByCheckingId(checkingId) != null
|
||||
|
||||
suspend fun updatePubkeyAlias(paymentHash: String, pubkey: String?, alias: String?) {
|
||||
dao.updatePubkeyAlias(paymentHash, pubkey, alias)
|
||||
}
|
||||
|
||||
/** Clear everything — useful for testing and logout. */
|
||||
suspend fun clearAll() {
|
||||
detailCache.clear()
|
||||
|
||||
@@ -14,7 +14,7 @@ import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
LnurlCacheEntity::class,
|
||||
NodeAliasCacheEntity::class,
|
||||
],
|
||||
version = 4, // ← bumped
|
||||
version = 5, // ← bumped
|
||||
exportSchema = false
|
||||
)
|
||||
@TypeConverters(PaymentConverters::class)
|
||||
@@ -70,6 +70,13 @@ abstract class AppDatabase : RoomDatabase() {
|
||||
}
|
||||
}
|
||||
|
||||
val MIGRATION_4_5 = object : Migration(4, 5) {
|
||||
override fun migrate(db: SupportSQLiteDatabase) {
|
||||
db.execSQL("ALTER TABLE payment_records ADD COLUMN pubkey TEXT")
|
||||
db.execSQL("ALTER TABLE payment_records ADD COLUMN alias TEXT")
|
||||
}
|
||||
}
|
||||
|
||||
fun getInstance(context: Context): AppDatabase =
|
||||
INSTANCE ?: synchronized(this) {
|
||||
INSTANCE ?: Room.databaseBuilder(
|
||||
|
||||
@@ -36,6 +36,9 @@ interface PaymentDao {
|
||||
@Query("DELETE FROM payment_records")
|
||||
suspend fun deleteAll()
|
||||
|
||||
@Query("UPDATE payment_records SET pubkey = :pubkey, alias = :alias WHERE paymentHash = :paymentHash")
|
||||
suspend fun updatePubkeyAlias(paymentHash: String, pubkey: String?, alias: String?)
|
||||
|
||||
/**
|
||||
* Full-table query used when search or filter is active.
|
||||
* All parameters are optional — pass null to skip that condition.
|
||||
@@ -56,7 +59,9 @@ interface PaymentDao {
|
||||
lower(memo) LIKE '%' || lower(:searchQuery) || '%' OR
|
||||
lower(paymentHash) LIKE '%' || lower(:searchQuery) || '%' OR
|
||||
lower(bolt11) LIKE '%' || lower(:searchQuery) || '%' OR
|
||||
lower(preimage) LIKE '%' || lower(:searchQuery) || '%'
|
||||
lower(preimage) LIKE '%' || lower(:searchQuery) || '%' OR
|
||||
lower(pubkey) LIKE '%' || lower(:searchQuery) || '%' OR
|
||||
lower(alias) LIKE '%' || lower(:searchQuery) || '%'
|
||||
))
|
||||
AND (:statusPattern IS NULL OR
|
||||
',' || :statusPattern || ',' LIKE '%,' || lower(status) || ',%')
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.bitcointxoko.gudariwallet.data.db
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import androidx.room.TypeConverters
|
||||
@@ -20,5 +21,7 @@ data class PaymentRecordEntity(
|
||||
val pending: Boolean,
|
||||
val preimage: String?,
|
||||
val extra: String?, // JSON blob — PaymentExtra serialised by TypeConverter
|
||||
val savedAt: Long // epoch ms — used for TTL check
|
||||
val savedAt: Long, // epoch ms — used for TTL check
|
||||
@ColumnInfo(name = "pubkey") val pubkey: String? = null,
|
||||
@ColumnInfo(name = "alias") val alias: String? = null
|
||||
)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.bitcointxoko.gudariwallet.data.db
|
||||
|
||||
import android.util.Log
|
||||
import com.bitcointxoko.gudariwallet.api.GsonProvider.gson
|
||||
import com.bitcointxoko.gudariwallet.api.PaymentRecord
|
||||
import com.bitcointxoko.gudariwallet.data.db.PaymentRecordEntity
|
||||
|
||||
@@ -30,13 +31,15 @@ fun PaymentRecord.toEntity(savedAt: Long): PaymentRecordEntity =
|
||||
feeMsat = feeMsat,
|
||||
memo = memo,
|
||||
time = time,
|
||||
createdAt = parseCreatedAt(time), // ← NEW
|
||||
createdAt = parseCreatedAt(time),
|
||||
status = status,
|
||||
bolt11 = bolt11,
|
||||
pending = pending,
|
||||
preimage = preimage,
|
||||
extra = extra?.let { com.bitcointxoko.gudariwallet.api.GsonProvider.gson.toJson(it) },
|
||||
savedAt = savedAt
|
||||
extra = extra?.let { gson.toJson(it) },
|
||||
savedAt = savedAt,
|
||||
pubkey = pubkey,
|
||||
alias = alias
|
||||
)
|
||||
|
||||
// ── PaymentRecordEntity → PaymentRecord ──────────────────────────────────────
|
||||
@@ -49,13 +52,12 @@ fun PaymentRecordEntity.toDomain(): PaymentRecord =
|
||||
feeMsat = feeMsat,
|
||||
memo = memo,
|
||||
time = time,
|
||||
createdAt = createdAt, // ← NEW
|
||||
createdAt = createdAt,
|
||||
status = status,
|
||||
bolt11 = bolt11,
|
||||
pending = pending,
|
||||
preimage = preimage,
|
||||
extra = extra?.let {
|
||||
com.bitcointxoko.gudariwallet.api.GsonProvider.gson
|
||||
.fromJson(it, com.bitcointxoko.gudariwallet.api.PaymentExtra::class.java)
|
||||
}
|
||||
extra = extra?.let { gson.fromJson(it, com.bitcointxoko.gudariwallet.api.PaymentExtra::class.java) },
|
||||
pubkey = pubkey,
|
||||
alias = alias
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user