ability to iterate over network ids only and get networks lenght without storage read

Signed-off-by: Uncle Stinky <uncle.stinky@ghostchain.io>
This commit is contained in:
Uncle Stinky 2026-02-22 21:54:51 +03:00
parent c963f7816b
commit f082dfc4e0
Signed by: st1nky
GPG Key ID: 016064BD97603B40
4 changed files with 10 additions and 3 deletions

View File

@ -1,6 +1,6 @@
[package]
name = "ghost-networks"
version = "0.1.24"
version = "0.1.25"
license.workspace = true
authors.workspace = true
edition.workspace = true

View File

@ -730,7 +730,9 @@ impl<T: Config> NetworkDataBasicHandler for Pallet<T> {
impl<T: Config> NetworkDataInspectHandler<NetworkData> for Pallet<T> {
fn count() -> u32 {
NetworkIndexes::<T>::get().len() as u32
NetworkIndexes::<T>::decode_len()
.map(|len| len as u32)
.unwrap_or_default()
}
fn contains_key(n: &Self::NetworkId) -> bool {
@ -757,6 +759,10 @@ impl<T: Config> NetworkDataInspectHandler<NetworkData> for Pallet<T> {
fn iter() -> PrefixIterator<(Self::NetworkId, NetworkData)> {
Networks::<T>::iter()
}
fn iter_indexes() -> impl Iterator<Item = Self::NetworkId> {
NetworkIndexes::<T>::get().into_iter()
}
}
impl<T: Config> NetworkDataMutateHandler<NetworkData, BalanceOf<T>> for Pallet<T> {

View File

@ -1,6 +1,6 @@
[package]
name = "ghost-traits"
version = "0.3.30"
version = "0.3.31"
license.workspace = true
authors.workspace = true
edition.workspace = true

View File

@ -21,6 +21,7 @@ pub trait NetworkDataInspectHandler<Network>: NetworkDataBasicHandler {
fn network_for_block(b: impl Into<usize>) -> Option<(Self::NetworkId, Network)>;
fn get(n: &Self::NetworkId) -> Option<Network>;
fn iter() -> PrefixIterator<(Self::NetworkId, Network)>;
fn iter_indexes() -> impl Iterator<Item = Self::NetworkId>;
}
pub trait NetworkDataMutateHandler<Network, Balance>: NetworkDataInspectHandler<Network> {