Skip to content
Snippets Groups Projects

feat(bma) add `get_written_transactions_for_bma()` and `get_pending_transactions_for_bma()` - close #1

Open Benoit Lavenier requested to merge fix/1/add_get_transactions_for_bma into master
1 unresolved thread

Files

+ 47
4
@@ -446,10 +446,40 @@ pub fn get_transactions_history_for_bma<GvaDb: GvaV1DbReadable, TxsMpDb: TxsMpV2
@@ -446,10 +446,40 @@ pub fn get_transactions_history_for_bma<GvaDb: GvaV1DbReadable, TxsMpDb: TxsMpV2
gva_db_ro: &GvaDb,
gva_db_ro: &GvaDb,
txs_mp_db_ro: &TxsMpDb,
txs_mp_db_ro: &TxsMpDb,
pubkey: PublicKey,
pubkey: PublicKey,
 
) -> KvResult<TxsHistory> {
 
// Get written TX
 
let TxsHistory { sent, received, .. } = get_written_transactions_for_bma(gva_db_ro, pubkey)?;
 
// Get pending TX
 
let TxsHistory {
 
sending, pending, ..
 
} = get_pending_transactions_for_bma(txs_mp_db_ro, pubkey)?;
 
// Return all (written + pending)
 
Ok(TxsHistory {
 
sent,
 
received,
 
sending,
 
pending,
 
})
 
}
 
 
// Needed for BMA only
 
pub fn get_written_transactions_for_bma<GvaDb: GvaV1DbReadable>(
 
gva_db_ro: &GvaDb,
 
pubkey: PublicKey,
 
) -> KvResult<TxsHistory> {
 
get_written_transactions_for_bma_with_range(gva_db_ro, pubkey, 0, u32::MAX)
 
}
 
 
// Needed for BMA only
 
pub fn get_written_transactions_for_bma_with_range<GvaDb: GvaV1DbReadable>(
 
gva_db_ro: &GvaDb,
 
pubkey: PublicKey,
 
start_block: u32,
 
end_block: u32,
) -> KvResult<TxsHistory> {
) -> KvResult<TxsHistory> {
let script_hash = Hash::compute(WalletScriptV10::single_sig(pubkey).to_string().as_bytes());
let script_hash = Hash::compute(WalletScriptV10::single_sig(pubkey).to_string().as_bytes());
let start_k = WalletHashWithBnV1Db::new(script_hash, BlockNumber(0));
let start_k = WalletHashWithBnV1Db::new(script_hash, BlockNumber(start_block));
let end_k = WalletHashWithBnV1Db::new(script_hash, BlockNumber(u32::MAX));
let end_k = WalletHashWithBnV1Db::new(script_hash, BlockNumber(end_block));
let sent = gva_db_ro
let sent = gva_db_ro
.txs_by_issuer()
.txs_by_issuer()
@@ -478,6 +508,19 @@ pub fn get_transactions_history_for_bma<GvaDb: GvaV1DbReadable, TxsMpDb: TxsMpV2
@@ -478,6 +508,19 @@ pub fn get_transactions_history_for_bma<GvaDb: GvaV1DbReadable, TxsMpDb: TxsMpV2
})
})
.flatten_ok()
.flatten_ok()
.collect::<KvResult<Vec<_>>>()?;
.collect::<KvResult<Vec<_>>>()?;
 
Ok(TxsHistory {
 
sent,
 
received,
 
sending: Vec::new(),
 
pending: Vec::new(),
 
})
 
}
 
 
// Needed for BMA only
 
pub fn get_pending_transactions_for_bma<TxsMpDb: TxsMpV2DbReadable>(
 
txs_mp_db_ro: &TxsMpDb,
 
pubkey: PublicKey,
 
) -> KvResult<TxsHistory> {
let sending = txs_mp_db_ro
let sending = txs_mp_db_ro
.txs_by_issuer()
.txs_by_issuer()
.get_ref_slice(&PubKeyKeyV2(pubkey), |hashs| {
.get_ref_slice(&PubKeyKeyV2(pubkey), |hashs| {
@@ -503,8 +546,8 @@ pub fn get_transactions_history_for_bma<GvaDb: GvaV1DbReadable, TxsMpDb: TxsMpV2
@@ -503,8 +546,8 @@ pub fn get_transactions_history_for_bma<GvaDb: GvaV1DbReadable, TxsMpDb: TxsMpV2
})?
})?
.unwrap_or_default();
.unwrap_or_default();
Ok(TxsHistory {
Ok(TxsHistory {
sent,
sent: Vec::new(),
received,
received: Vec::new(),
sending,
sending,
pending,
pending,
})
})
Loading