mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-26 19:17:58 +00:00
Allow to specify some max number of values for storages in pallet macro. (#8735)
* implement max_values + storages info * some formatting + doc * rename StoragesInfo -> PalletStorageInfo * merge both StorageInfoTrait and PalletStorageInfo I think it is more future proof. In the future some storage could make use of multiple prefix. Like one to store how much value has been inserted, etc... * Update frame/support/procedural/src/storage/parse.rs Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Update frame/support/procedural/src/storage/storage_struct.rs Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com> * Fix max_size using hasher information hasher now expose `max_len` which allows to computes their maximum len. For hasher without concatenation, it is the size of the hash part, for hasher with concatenation, it is the size of the hash part + max encoded len of the key. * fix tests * fix ui tests Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
59f34ab8bc
commit
9bf62ef65d
@@ -1234,7 +1234,10 @@ pub mod pallet_prelude {
|
||||
EqNoBound, PartialEqNoBound, RuntimeDebugNoBound, DebugNoBound, CloneNoBound, Twox256,
|
||||
Twox128, Blake2_256, Blake2_128, Identity, Twox64Concat, Blake2_128Concat, ensure,
|
||||
RuntimeDebug, storage,
|
||||
traits::{Get, Hooks, IsType, GetPalletVersion, EnsureOrigin, PalletInfoAccess},
|
||||
traits::{
|
||||
Get, Hooks, IsType, GetPalletVersion, EnsureOrigin, PalletInfoAccess, StorageInfoTrait,
|
||||
ConstU32, GetDefault,
|
||||
},
|
||||
dispatch::{DispatchResultWithPostInfo, Parameter, DispatchError, DispatchResult},
|
||||
weights::{DispatchClass, Pays, Weight},
|
||||
storage::types::{
|
||||
@@ -1346,6 +1349,17 @@ pub mod pallet_prelude {
|
||||
/// Thus when defining a storage named `Foo`, it can later be accessed from `Pallet` using
|
||||
/// `<Pallet as Store>::Foo`.
|
||||
///
|
||||
/// To generate the full storage info (used for PoV calculation) use the attribute
|
||||
/// `#[pallet::set_storage_max_encoded_len]`, e.g.:
|
||||
/// ```ignore
|
||||
/// #[pallet::pallet]
|
||||
/// #[pallet::set_storage_max_encoded_len]
|
||||
/// pub struct Pallet<T>(_);
|
||||
/// ```
|
||||
///
|
||||
/// This require all storage to implement the trait [`traits::StorageInfoTrait`], thus all keys
|
||||
/// and value types must bound [`traits::MaxEncodedLen`].
|
||||
///
|
||||
/// ### Macro expansion:
|
||||
///
|
||||
/// The macro add this attribute to the struct definition:
|
||||
@@ -1370,7 +1384,14 @@ pub mod pallet_prelude {
|
||||
/// given by [`frame_support::traits::PalletInfo`].
|
||||
/// (The implementation use the associated type `frame_system::Config::PalletInfo`).
|
||||
///
|
||||
/// If attribute generate_store then macro create the trait `Store` and implement it on `Pallet`.
|
||||
/// It implements [`traits::StorageInfoTrait`] on `Pallet` which give information about all storages.
|
||||
///
|
||||
/// If the attribute generate_store is set then the macro creates the trait `Store` and implements
|
||||
/// it on `Pallet`.
|
||||
///
|
||||
/// If the attribute set_storage_max_encoded_len is set then the macro call
|
||||
/// [`traits::StorageInfoTrait`] for each storage in the implementation of
|
||||
/// [`traits::StorageInfoTrait`] for the pallet.
|
||||
///
|
||||
/// # Hooks: `#[pallet::hooks]` mandatory
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user