mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 10:27:59 +00:00
pallet macro: always generate storage info on pallet struct (#9246)
* always implement storage info on Pallet * fix UI test * Fold span computation into trait and method computation Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
This commit is contained in:
committed by
GitHub
parent
f93074d086
commit
f96c5df754
@@ -33,10 +33,16 @@ pub fn impl_storage_info(def: &DeclStorageDefExt) -> TokenStream {
|
||||
for line in def.storage_lines.iter() {
|
||||
let storage_struct = &line.storage_struct;
|
||||
|
||||
let (trait_, method) = if def.generate_storage_info {
|
||||
(quote!(#scrate::traits::StorageInfoTrait), quote!(storage_info))
|
||||
} else {
|
||||
(quote!(#scrate::traits::PartialStorageInfoTrait), quote!(partial_storage_info))
|
||||
};
|
||||
|
||||
res_append_storage.extend(quote!(
|
||||
let mut storage_info = <
|
||||
#storage_struct as #scrate::traits::StorageInfoTrait
|
||||
>::storage_info();
|
||||
#storage_struct as #trait_
|
||||
>::#method();
|
||||
res.append(&mut storage_info);
|
||||
));
|
||||
}
|
||||
|
||||
@@ -399,7 +399,101 @@ pub fn decl_and_impl(def: &DeclStorageDefExt) -> TokenStream {
|
||||
},
|
||||
}
|
||||
} else {
|
||||
TokenStream::default()
|
||||
// Implement `__partial_storage_info` which doesn't require MaxEncodedLen on keys and
|
||||
// values.
|
||||
match &line.storage_type {
|
||||
StorageLineTypeDef::Simple(_) => {
|
||||
quote!(
|
||||
impl<#impl_trait> #scrate::traits::PartialStorageInfoTrait
|
||||
for #storage_struct
|
||||
#optional_storage_where_clause
|
||||
{
|
||||
fn partial_storage_info()
|
||||
-> #scrate::sp_std::vec::Vec<#scrate::traits::StorageInfo>
|
||||
{
|
||||
#scrate::sp_std::vec![
|
||||
#scrate::traits::StorageInfo {
|
||||
prefix: <
|
||||
#storage_struct as #scrate::#storage_generator_trait
|
||||
>::storage_value_final_key(),
|
||||
max_values: Some(1),
|
||||
max_size: None,
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
)
|
||||
},
|
||||
StorageLineTypeDef::Map(_) => {
|
||||
quote!(
|
||||
impl<#impl_trait> #scrate::traits::PartialStorageInfoTrait
|
||||
for #storage_struct
|
||||
#optional_storage_where_clause
|
||||
{
|
||||
fn partial_storage_info()
|
||||
-> #scrate::sp_std::vec::Vec<#scrate::traits::StorageInfo>
|
||||
{
|
||||
#scrate::sp_std::vec![
|
||||
#scrate::traits::StorageInfo {
|
||||
prefix: <
|
||||
#storage_struct
|
||||
as #scrate::storage::StoragePrefixedMap<#value_type>
|
||||
>::final_prefix(),
|
||||
max_values: #max_values,
|
||||
max_size: None,
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
)
|
||||
},
|
||||
StorageLineTypeDef::DoubleMap(_) => {
|
||||
quote!(
|
||||
impl<#impl_trait> #scrate::traits::PartialStorageInfoTrait
|
||||
for #storage_struct
|
||||
#optional_storage_where_clause
|
||||
{
|
||||
fn partial_storage_info()
|
||||
-> #scrate::sp_std::vec::Vec<#scrate::traits::StorageInfo>
|
||||
{
|
||||
#scrate::sp_std::vec![
|
||||
#scrate::traits::StorageInfo {
|
||||
prefix: <
|
||||
#storage_struct
|
||||
as #scrate::storage::StoragePrefixedMap<#value_type>
|
||||
>::final_prefix(),
|
||||
max_values: #max_values,
|
||||
max_size: None,
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
)
|
||||
},
|
||||
StorageLineTypeDef::NMap(_) => {
|
||||
quote!(
|
||||
impl<#impl_trait> #scrate::traits::PartialStorageInfoTrait
|
||||
for #storage_struct
|
||||
#optional_storage_where_clause
|
||||
{
|
||||
fn partial_storage_info()
|
||||
-> #scrate::sp_std::vec::Vec<#scrate::traits::StorageInfo>
|
||||
{
|
||||
#scrate::sp_std::vec![
|
||||
#scrate::traits::StorageInfo {
|
||||
prefix: <
|
||||
#storage_struct
|
||||
as #scrate::storage::StoragePrefixedMap<#value_type>
|
||||
>::final_prefix(),
|
||||
max_values: #max_values,
|
||||
max_size: None,
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
)
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
impls.extend(quote!(
|
||||
|
||||
Reference in New Issue
Block a user