mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-28 15:37:56 +00:00
Additional RPC for dumping all main storage key pairs under a prefix (#4803)
* Merge branch 'gav-split-balanecs-vesting' into gav-upsub # Conflicts: # Cargo.lock # cli/Cargo.toml # collator/Cargo.toml # primitives/Cargo.toml # runtime/common/Cargo.toml # runtime/common/src/claims.rs # runtime/kusama/Cargo.toml # runtime/polkadot/Cargo.toml # service/Cargo.toml * Update client/src/client.rs * Update client/src/client.rs * Fix merge conflict Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
@@ -280,6 +280,22 @@ impl<B, E, Block, RA> Client<B, E, Block, RA> where
|
||||
Ok(keys)
|
||||
}
|
||||
|
||||
/// Given a `BlockId` and a key prefix, return the matching child storage keys and values in that block.
|
||||
pub fn storage_pairs(&self, id: &BlockId<Block>, key_prefix: &StorageKey)
|
||||
-> sp_blockchain::Result<Vec<(StorageKey, StorageData)>>
|
||||
{
|
||||
let state = self.state_at(id)?;
|
||||
let keys = state
|
||||
.keys(&key_prefix.0)
|
||||
.into_iter()
|
||||
.map(|k| {
|
||||
let d = state.storage(&k).ok().flatten().unwrap_or_default();
|
||||
(StorageKey(k), StorageData(d))
|
||||
})
|
||||
.collect();
|
||||
Ok(keys)
|
||||
}
|
||||
|
||||
/// Given a `BlockId` and a key prefix, return a `KeyIterator` iterates matching storage keys in that block.
|
||||
pub fn storage_keys_iter<'a>(
|
||||
&self,
|
||||
@@ -296,7 +312,9 @@ impl<B, E, Block, RA> Client<B, E, Block, RA> where
|
||||
}
|
||||
|
||||
/// Given a `BlockId` and a key, return the value under the key in that block.
|
||||
pub fn storage(&self, id: &BlockId<Block>, key: &StorageKey) -> sp_blockchain::Result<Option<StorageData>> {
|
||||
pub fn storage(&self, id: &BlockId<Block>, key: &StorageKey)
|
||||
-> sp_blockchain::Result<Option<StorageData>>
|
||||
{
|
||||
Ok(self.state_at(id)?
|
||||
.storage(&key.0).map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))?
|
||||
.map(StorageData)
|
||||
@@ -305,7 +323,8 @@ impl<B, E, Block, RA> Client<B, E, Block, RA> where
|
||||
|
||||
/// Given a `BlockId` and a key, return the value under the hash in that block.
|
||||
pub fn storage_hash(&self, id: &BlockId<Block>, key: &StorageKey)
|
||||
-> sp_blockchain::Result<Option<Block::Hash>> {
|
||||
-> sp_blockchain::Result<Option<Block::Hash>>
|
||||
{
|
||||
Ok(self.state_at(id)?
|
||||
.storage_hash(&key.0).map_err(|e| sp_blockchain::Error::from_state(Box::new(e)))?
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user