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.TransactionEntity
|
||||||
import cash.z.ecc.android.sdk.db.entity.Utxo
|
import cash.z.ecc.android.sdk.db.entity.Utxo
|
||||||
import cash.z.ecc.android.sdk.ext.twig
|
import cash.z.ecc.android.sdk.ext.twig
|
||||||
|
import cash.z.ecc.android.sdk.type.UnifiedAddressAccount
|
||||||
|
|
||||||
//
|
//
|
||||||
// Database
|
// Database
|
||||||
|
@ -46,6 +47,7 @@ abstract class DerivedDataDb : RoomDatabase() {
|
||||||
abstract fun blockDao(): BlockDao
|
abstract fun blockDao(): BlockDao
|
||||||
abstract fun receivedDao(): ReceivedDao
|
abstract fun receivedDao(): ReceivedDao
|
||||||
abstract fun sentDao(): SentDao
|
abstract fun sentDao(): SentDao
|
||||||
|
abstract fun accountDao(): AccountDao
|
||||||
|
|
||||||
//
|
//
|
||||||
// Migrations
|
// Migrations
|
||||||
|
@ -175,7 +177,6 @@ abstract class DerivedDataDb : RoomDatabase() {
|
||||||
);
|
);
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
database.execSQL("INSERT INTO accounts_new SELECT * FROM accounts;")
|
|
||||||
database.execSQL("DROP TABLE accounts;")
|
database.execSQL("DROP TABLE accounts;")
|
||||||
database.execSQL("ALTER TABLE accounts_new RENAME TO accounts;")
|
database.execSQL("ALTER TABLE accounts_new RENAME TO accounts;")
|
||||||
database.execSQL("PRAGMA foreign_keys = ON;")
|
database.execSQL("PRAGMA foreign_keys = ON;")
|
||||||
|
@ -221,6 +222,20 @@ interface SentDao {
|
||||||
fun count(): Int
|
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
|
* The data access object for transactions, used for querying all transaction information, including
|
||||||
* whether transactions are mined.
|
* whether transactions are mined.
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.content.Context
|
||||||
import androidx.paging.PagedList
|
import androidx.paging.PagedList
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import androidx.room.RoomDatabase
|
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.BlockDao
|
||||||
import cash.z.ecc.android.sdk.db.DerivedDataDb
|
import cash.z.ecc.android.sdk.db.DerivedDataDb
|
||||||
import cash.z.ecc.android.sdk.db.TransactionDao
|
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.ZcashSdk
|
||||||
import cash.z.ecc.android.sdk.ext.android.toFlowPagedList
|
import cash.z.ecc.android.sdk.ext.android.toFlowPagedList
|
||||||
import cash.z.ecc.android.sdk.ext.android.toRefreshable
|
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.Dispatchers.IO
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
|
@ -50,6 +52,7 @@ open class PagedTransactionRepository(
|
||||||
}
|
}
|
||||||
|
|
||||||
private val blocks: BlockDao = derivedDataDb.blockDao()
|
private val blocks: BlockDao = derivedDataDb.blockDao()
|
||||||
|
private val accounts: AccountDao = derivedDataDb.accountDao()
|
||||||
private val transactions: TransactionDao = derivedDataDb.transactionDao()
|
private val transactions: TransactionDao = derivedDataDb.transactionDao()
|
||||||
private val receivedTxDataSourceFactory = transactions.getReceivedTransactions().toRefreshable()
|
private val receivedTxDataSourceFactory = transactions.getReceivedTransactions().toRefreshable()
|
||||||
private val sentTxDataSourceFactory = transactions.getSentTransactions().toRefreshable()
|
private val sentTxDataSourceFactory = transactions.getSentTransactions().toRefreshable()
|
||||||
|
@ -95,6 +98,9 @@ open class PagedTransactionRepository(
|
||||||
override suspend fun count(): Int = withContext(IO) {
|
override suspend fun count(): Int = withContext(IO) {
|
||||||
transactions.count()
|
transactions.count()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun getAccount(accountId: Int): UnifiedAddressAccount? = accounts.findAccountById(accountId)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the underlying database.
|
* 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
|
// 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 findBlockHash(height: Int): ByteArray? = blocks.findHashByHeight(height)
|
||||||
fun getTransactionCount(): Int = transactions.count()
|
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 androidx.paging.PagedList
|
||||||
import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction
|
import cash.z.ecc.android.sdk.db.entity.ConfirmedTransaction
|
||||||
import cash.z.ecc.android.sdk.db.entity.EncodedTransaction
|
import cash.z.ecc.android.sdk.db.entity.EncodedTransaction
|
||||||
|
import cash.z.ecc.android.sdk.type.UnifiedAddressAccount
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -76,6 +77,8 @@ interface TransactionRepository {
|
||||||
|
|
||||||
suspend fun count(): Int
|
suspend fun count(): Int
|
||||||
|
|
||||||
|
suspend fun getAccount(accountId: Int): UnifiedAddressAccount?
|
||||||
|
|
||||||
//
|
//
|
||||||
// Transactions
|
// Transactions
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue