New: Add getAccount.
This commit is contained in:
parent
39972d8e43
commit
278adfe0b9
|
@ -17,6 +17,7 @@ import cash.z.ecc.android.sdk.db.entity.Sent
|
|||
import cash.z.ecc.android.sdk.db.entity.TransactionEntity
|
||||
import cash.z.ecc.android.sdk.db.entity.Utxo
|
||||
import cash.z.ecc.android.sdk.ext.twig
|
||||
import cash.z.ecc.android.sdk.type.UnifiedAddressAccount
|
||||
|
||||
//
|
||||
// Database
|
||||
|
@ -46,6 +47,7 @@ abstract class DerivedDataDb : RoomDatabase() {
|
|||
abstract fun blockDao(): BlockDao
|
||||
abstract fun receivedDao(): ReceivedDao
|
||||
abstract fun sentDao(): SentDao
|
||||
abstract fun accountDao(): AccountDao
|
||||
|
||||
//
|
||||
// Migrations
|
||||
|
@ -175,7 +177,6 @@ abstract class DerivedDataDb : RoomDatabase() {
|
|||
);
|
||||
""".trimIndent()
|
||||
)
|
||||
database.execSQL("INSERT INTO accounts_new SELECT * FROM accounts;")
|
||||
database.execSQL("DROP TABLE accounts;")
|
||||
database.execSQL("ALTER TABLE accounts_new RENAME TO accounts;")
|
||||
database.execSQL("PRAGMA foreign_keys = ON;")
|
||||
|
@ -221,6 +222,20 @@ interface SentDao {
|
|||
fun count(): Int
|
||||
}
|
||||
|
||||
@Dao
|
||||
interface AccountDao {
|
||||
@Query(
|
||||
"""
|
||||
SELECT account AS accountId,
|
||||
transparent_address AS rawTransparentAddress,
|
||||
address AS rawShieldedAddress
|
||||
FROM accounts
|
||||
WHERE account = :id
|
||||
"""
|
||||
)
|
||||
suspend fun findAccountById(id: Int): UnifiedAddressAccount?
|
||||
}
|
||||
|
||||
/**
|
||||
* The data access object for transactions, used for querying all transaction information, including
|
||||
* whether transactions are mined.
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.content.Context
|
|||
import androidx.paging.PagedList
|
||||
import androidx.room.Room
|
||||
import androidx.room.RoomDatabase
|
||||
import cash.z.ecc.android.sdk.db.AccountDao
|
||||
import cash.z.ecc.android.sdk.db.BlockDao
|
||||
import cash.z.ecc.android.sdk.db.DerivedDataDb
|
||||
import cash.z.ecc.android.sdk.db.TransactionDao
|
||||
|
@ -11,6 +12,7 @@ import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction
|
|||
import cash.z.ecc.android.sdk.ext.ZcashSdk
|
||||
import cash.z.ecc.android.sdk.ext.android.toFlowPagedList
|
||||
import cash.z.ecc.android.sdk.ext.android.toRefreshable
|
||||
import cash.z.ecc.android.sdk.type.UnifiedAddressAccount
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
|
@ -50,6 +52,7 @@ open class PagedTransactionRepository(
|
|||
}
|
||||
|
||||
private val blocks: BlockDao = derivedDataDb.blockDao()
|
||||
private val accounts: AccountDao = derivedDataDb.accountDao()
|
||||
private val transactions: TransactionDao = derivedDataDb.transactionDao()
|
||||
private val receivedTxDataSourceFactory = transactions.getReceivedTransactions().toRefreshable()
|
||||
private val sentTxDataSourceFactory = transactions.getSentTransactions().toRefreshable()
|
||||
|
@ -95,6 +98,9 @@ open class PagedTransactionRepository(
|
|||
override suspend fun count(): Int = withContext(IO) {
|
||||
transactions.count()
|
||||
}
|
||||
|
||||
override suspend fun getAccount(accountId: Int): UnifiedAddressAccount? = accounts.findAccountById(accountId)
|
||||
|
||||
/**
|
||||
* Close the underlying database.
|
||||
*/
|
||||
|
@ -105,4 +111,6 @@ open class PagedTransactionRepository(
|
|||
// TODO: begin converting these into Data Access API. For now, just collect the desired operations and iterate/refactor, later
|
||||
fun findBlockHash(height: Int): ByteArray? = blocks.findHashByHeight(height)
|
||||
fun getTransactionCount(): Int = transactions.count()
|
||||
|
||||
// TODO: convert this into a wallet repository rather than "transaction repository"
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package cash.z.ecc.android.sdk.transaction
|
|||
import androidx.paging.PagedList
|
||||
import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction
|
||||
import cash.z.ecc.android.sdk.db.entity.EncodedTransaction
|
||||
import cash.z.ecc.android.sdk.type.UnifiedAddressAccount
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
/**
|
||||
|
@ -76,6 +77,8 @@ interface TransactionRepository {
|
|||
|
||||
suspend fun count(): Int
|
||||
|
||||
suspend fun getAccount(accountId: Int): UnifiedAddressAccount?
|
||||
|
||||
//
|
||||
// Transactions
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue