Skip to content

Commit 2fb85c5

Browse files
guidiazaesedepece
authored andcommitted
chore(json_rpc): simplify QueryStakesFilter
1 parent aab9fed commit 2fb85c5

File tree

3 files changed

+51
-53
lines changed

3 files changed

+51
-53
lines changed

node/src/actors/chain_manager/handlers.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ use witnet_data_structures::{
2020
get_protocol_version,
2121
proto::versioning::ProtocolVersion,
2222
refresh_protocol_version,
23-
staking::{errors::StakesError, prelude::StakeKey},
23+
staking::{errors::StakesError, prelude::StakeKey, stakes::QueryStakesKey},
2424
transaction::{
2525
DRTransaction, StakeTransaction, Transaction, UnstakeTransaction, VTTransaction,
2626
},
@@ -1734,7 +1734,7 @@ impl Handler<GetBalance2> for ChainManager {
17341734
})
17351735
.add_utxo_value(vto.value, vto.time_lock as i64 > now);
17361736
}
1737-
let stakes = self.chain_state.stakes.query_stakes(QueryStakesFilter::All);
1737+
let stakes = self.chain_state.stakes.query_stakes(QueryStakesKey::All);
17381738
if let Ok(stakes) = stakes {
17391739
stakes.iter().for_each(|entry| {
17401740
balances
@@ -1757,21 +1757,22 @@ impl Handler<GetBalance2> for ChainManager {
17571757
NodeBalance2::Many(balances)
17581758
}
17591759
GetBalance2::Address(pkh) => {
1760+
let pkh = try_do_magic_into_pkh(pkh.clone()).map_err(|e| {
1761+
log::warn!(
1762+
"Failed to convert {:?} into a valid public key hash: {e}",
1763+
pkh
1764+
);
1765+
e
1766+
})?;
17601767
let mut balance = transaction_factory::get_utxos_balance(
17611768
&self.chain_state.unspent_outputs_pool,
1762-
try_do_magic_into_pkh(pkh.clone()).map_err(|e| {
1763-
log::warn!(
1764-
"Failed to convert {:?} into a valid public key hash: {e}",
1765-
pkh
1766-
);
1767-
e
1768-
})?,
1769+
pkh,
17691770
now,
17701771
);
17711772
let stakes = self
17721773
.chain_state
17731774
.stakes
1774-
.query_stakes(QueryStakesFilter::Withdrawer(pkh));
1775+
.query_stakes(QueryStakesKey::Validator(pkh));
17751776
if let Ok(stakes) = stakes {
17761777
balance.add_staked(stakes.iter().fold(0u64, |staked: u64, entry| {
17771778
staked.saturating_add(entry.value.coins.nanowits())

node/src/actors/messages.rs

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -359,21 +359,11 @@ impl Message for QueryStakePowers {
359359
/// Stake key for quering stakes
360360
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
361361
#[derive(Default)]
362-
pub enum QueryStakesFilter {
362+
pub struct QueryStakesFilter {
363363
/// To search by the validator public key hash
364-
Validator(MagicEither<String, PublicKeyHash>),
364+
pub validator: Option<MagicEither<String, PublicKeyHash>>,
365365
/// To search by the withdrawer public key hash
366-
Withdrawer(MagicEither<String, PublicKeyHash>),
367-
/// To search by validator and withdrawer public key hashes
368-
Key(
369-
(
370-
MagicEither<String, PublicKeyHash>,
371-
MagicEither<String, PublicKeyHash>,
372-
),
373-
),
374-
/// To query all stake entries
375-
#[default]
376-
All,
366+
pub withdrawer: Option<MagicEither<String, PublicKeyHash>>,
377367
}
378368

379369

@@ -411,19 +401,23 @@ where
411401
{
412402
type Error = PublicKeyHashParseError;
413403

414-
fn try_from(query: QueryStakesFilter) -> Result<Self, Self::Error> {
415-
Ok(match query {
416-
QueryStakesFilter::Key(key) => QueryStakesKey::Key(StakeKey {
417-
validator: try_do_magic_into_pkh(key.0)?.into(),
418-
withdrawer: try_do_magic_into_pkh(key.1)?.into(),
419-
}),
420-
QueryStakesFilter::Validator(v) => {
421-
QueryStakesKey::Validator(try_do_magic_into_pkh(v)?.into())
422-
}
423-
QueryStakesFilter::Withdrawer(w) => {
424-
QueryStakesKey::Withdrawer(try_do_magic_into_pkh(w)?.into())
425-
}
426-
QueryStakesFilter::All => QueryStakesKey::All,
404+
fn try_from(filter: QueryStakesFilter) -> Result<Self, Self::Error> {
405+
Ok(match (filter.validator, filter.withdrawer) {
406+
(Some(validator), Some(withdrawer)) => {
407+
QueryStakesKey::Key(StakeKey {
408+
validator: try_do_magic_into_pkh(validator)?.into(),
409+
withdrawer: try_do_magic_into_pkh(withdrawer)?.into(),
410+
})
411+
},
412+
(Some(validator), None) => {
413+
QueryStakesKey::Validator(try_do_magic_into_pkh(validator)?.into())
414+
},
415+
(None, Some(withdrawer)) => {
416+
QueryStakesKey::Withdrawer(try_do_magic_into_pkh(withdrawer)?.into())
417+
},
418+
(None, None) => {
419+
QueryStakesKey::All
420+
},
427421
})
428422
}
429423
}

src/cli/node/json_rpc_client.rs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1955,25 +1955,28 @@ pub fn query_stakes(
19551955
long: bool,
19561956
) -> Result<(), failure::Error> {
19571957
let mut stream = start_client(addr)?;
1958-
let params = match (validator, withdrawer) {
1959-
(Some(validator), Some(withdrawer)) => QueryStakes {
1960-
filter: QueryStakesFilter::Key((
1961-
MagicEither::Left(validator),
1962-
MagicEither::Left(withdrawer),
1963-
)),
1964-
limits: QueryStakesLimits::default(),
1965-
},
1966-
(Some(validator), _) => QueryStakes {
1967-
filter: QueryStakesFilter::Validator(MagicEither::Left(validator)),
1968-
limits: QueryStakesLimits::default(),
1969-
},
1970-
(_, Some(withdrawer)) => QueryStakes {
1971-
filter: QueryStakesFilter::Withdrawer(MagicEither::Left(withdrawer)),
1972-
limits: QueryStakesLimits::default(),
1958+
let params = QueryStakes {
1959+
filter: match (validator, withdrawer) {
1960+
(Some(validator), Some(withdrawer)) => QueryStakesFilter {
1961+
validator: Some(MagicEither::Left(validator)),
1962+
withdrawer: Some(MagicEither::Left(withdrawer)),
1963+
},
1964+
(Some(validator), None) => QueryStakesFilter {
1965+
validator: Some(MagicEither::Left(validator)),
1966+
withdrawer: None,
1967+
},
1968+
(None, Some(withdrawer)) => QueryStakesFilter {
1969+
validator: None,
1970+
withdrawer: Some(MagicEither::Left(withdrawer)),
1971+
},
1972+
(None, None) => QueryStakesFilter {
1973+
validator: None,
1974+
withdrawer: None,
1975+
},
19731976
},
1974-
(None, None) => QueryStakes::default(),
1977+
limits: QueryStakesLimits::default(),
19751978
};
1976-
1979+
19771980
let response = send_request(
19781981
&mut stream,
19791982
&format!(

0 commit comments

Comments
 (0)