Macro frame_support::generate_storage_alias[][src]

macro_rules! generate_storage_alias {
    ($pallet : ident, $name : ident => Map < ($key : ty, $hasher : ty), $value :
 ty $(, $querytype : ty) ? >) => { ... };
    ($pallet : ident, $name : ident => DoubleMap < ($key1 : ty, $hasher1 : ty),
 ($key2 : ty, $hasher2 : ty), $value : ty $(, $querytype : ty) ? >) => { ... };
    ($pallet : ident, $name : ident => NMap < Key < $(($key : ty, $hasher : ty)),
 + >, $value : ty $(, $querytype : ty) ? >) => { ... };
    ($pallet : ident, $name : ident => Value < $value : ty $(, $querytype : ty) ?
 >) => { ... };
    ($pallet : ident, $name : ident < $t : ident : $bounds : tt > => Map <
 ($key : ty, $hasher : ty), $value : ty $(, $querytype : ty) ? >) => { ... };
    ($pallet : ident, $name : ident < $t : ident : $bounds : tt > => DoubleMap <
 ($key1 : ty, $hasher1 : ty), ($key2 : ty, $hasher2 : ty), $value : ty
 $(, $querytype : ty) ? >) => { ... };
    ($pallet : ident, $name : ident < $t : ident : $bounds : tt > => NMap <
 $(($key : ty, $hasher : ty),) + $value : ty $(, $querytype : ty) ? >) => { ... };
    ($pallet : ident, $name : ident < $t : ident : $bounds : tt > => Value <
 $value : ty $(, $querytype : ty) ? >) => { ... };
    (@ GENERATE_INSTANCE_STRUCT $pallet : ident, $name : ident) => { ... };
}
Expand description

Generate a new type alias for storage::types::StorageValue, storage::types::StorageMap, storage::types::StorageDoubleMap and storage::types::StorageNMap.

Useful for creating a storage-like struct for test and migrations.

use frame_support::codec;
use frame_support::Twox64Concat;
// generate a storage value with type u32.
generate_storage_alias!(Prefix, StorageName => Value<u32>);

// generate a double map from `(u32, u32)` (with hashers `Twox64Concat` for each key)
// to `Vec<u8>`
generate_storage_alias!(
	OtherPrefix, OtherStorageName => DoubleMap<
		(u32, Twox64Concat),
		(u32, Twox64Concat),
		Vec<u8>
	>
);

// optionally specify the query type
use frame_support::pallet_prelude::{ValueQuery, OptionQuery};
generate_storage_alias!(Prefix, ValueName => Value<u32, OptionQuery>);
generate_storage_alias!(
	Prefix, SomeStorageName => DoubleMap<
		(u32, Twox64Concat),
		(u32, Twox64Concat),
		Vec<u8>,
		ValueQuery
	>
);

// generate a map from `Config::AccountId` (with hasher `Twox64Concat`) to `Vec<u8>`
trait Config { type AccountId: codec::FullCodec; }
generate_storage_alias!(
	Prefix, GenericStorage<T: Config> => Map<(T::AccountId, Twox64Concat), Vec<u8>>
);