From 46170ce153ba5794d734bf672c4f2951d3a1a266 Mon Sep 17 00:00:00 2001 From: librelois <c@elo.tf> Date: Fri, 2 Apr 2021 17:35:14 +0200 Subject: [PATCH] [feat] bca: add req BalancesOfScripts --- .../modules/gva/bca/src/exec_req_type.rs | 3 +++ .../gva/bca/src/exec_req_type/balances.rs | 22 +++++++++++++++++++ rust-libs/modules/gva/bca/types/src/lib.rs | 1 + 3 files changed, 26 insertions(+) diff --git a/rust-libs/modules/gva/bca/src/exec_req_type.rs b/rust-libs/modules/gva/bca/src/exec_req_type.rs index fc6c92749..183a3e5e6 100644 --- a/rust-libs/modules/gva/bca/src/exec_req_type.rs +++ b/rust-libs/modules/gva/bca/src/exec_req_type.rs @@ -92,5 +92,8 @@ pub(super) async fn execute_req_type( )) } BcaReqTypeV0::CurrentUd => current_ud::exec_req_current_ud(bca_executor).await, + BcaReqTypeV0::BalancesOfScripts(scripts) => { + balances::exec_req_balances_of_scripts(bca_executor, scripts).await + } } } diff --git a/rust-libs/modules/gva/bca/src/exec_req_type/balances.rs b/rust-libs/modules/gva/bca/src/exec_req_type/balances.rs index 7a468df84..6901a9d03 100644 --- a/rust-libs/modules/gva/bca/src/exec_req_type/balances.rs +++ b/rust-libs/modules/gva/bca/src/exec_req_type/balances.rs @@ -37,3 +37,25 @@ pub(super) async fn exec_req_balances_of_pubkeys( .await??, )) } + +pub(super) async fn exec_req_balances_of_scripts( + bca_executor: &BcaExecutor, + scripts: ArrayVec<[WalletScriptV10; 16]>, +) -> Result<BcaRespTypeV0, ExecReqTypeError> { + let dbs_reader = bca_executor.dbs_reader(); + Ok(BcaRespTypeV0::Balances( + bca_executor + .dbs_pool + .execute(move |_| { + scripts + .into_iter() + .map(|script| { + dbs_reader + .get_account_balance(&script) + .map(|balance_opt| balance_opt.map(|balance| balance.0)) + }) + .collect::<Result<ArrayVec<_>, _>>() + }) + .await??, + )) +} diff --git a/rust-libs/modules/gva/bca/types/src/lib.rs b/rust-libs/modules/gva/bca/types/src/lib.rs index 4cc715f05..a9b987ba3 100644 --- a/rust-libs/modules/gva/bca/types/src/lib.rs +++ b/rust-libs/modules/gva/bca/types/src/lib.rs @@ -78,6 +78,7 @@ pub enum BcaReqTypeV0 { SendTxs(Txs), Identities(ArrayVec<[PublicKey; 16]>), CurrentUd, + BalancesOfScripts(ArrayVec<[WalletScriptV10; 16]>), } // Request types helpers -- GitLab