expose linked map info to metadata (#2037)

* expose linked map info to metadata

* Make it non breaking change

* another way

* change to option 1

* bump metadata version

* fix test

* bump version and update wasm
This commit is contained in:
Xiliang Chen authored and Gav Wood committed 2019-03-23 11:17:29 +01:00
1 parent 6e394464b8
commit 36d90ff272
10 files changed
+2582 -29

No files matched your search

File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -58,8 +58,8 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
spec_name: create_runtime_str!("node"), spec_name: create_runtime_str!("node"),
impl_name: create_runtime_str!("substrate-node"), impl_name: create_runtime_str!("substrate-node"),
authoring_version: 10, authoring_version: 10,
spec_version: 40, spec_version: 41,
impl_version: 40, impl_version: 41,
apis: RUNTIME_API_VERSIONS, apis: RUNTIME_API_VERSIONS,
}; };
File diff suppressed because it is too large. Load diff
+8 -5
View File
@@ -261,7 +261,8 @@ pub enum StorageFunctionType {
Map { Map {
key: DecodeDifferentStr, key: DecodeDifferentStr,
value: DecodeDifferentStr, value: DecodeDifferentStr,
} is_linked: bool,
},
} }
/// A storage function modifier. /// A storage function modifier.
@@ -301,8 +302,10 @@ pub struct RuntimeMetadataPrefixed(pub u32, pub RuntimeMetadata);
pub enum RuntimeMetadata { pub enum RuntimeMetadata {
/// Unused; enum filler. /// Unused; enum filler.
V0(RuntimeMetadataDeprecated), V0(RuntimeMetadataDeprecated),
/// Version 1 for runtime metadata. /// Version 1 for runtime metadata. No longer used.
V1(RuntimeMetadataV1), V1(RuntimeMetadataDeprecated),
/// Version 2 for runtime metadata.
V2(RuntimeMetadataV2),
} }
/// Enum that should fail. /// Enum that should fail.
@@ -322,10 +325,10 @@ impl Decode for RuntimeMetadataDeprecated {
} }
} }
/// The metadata of a runtime version 1. /// The metadata of a runtime version 2.
#[derive(Eq, Encode, PartialEq)] #[derive(Eq, Encode, PartialEq)]
#[cfg_attr(feature = "std", derive(Decode, Debug, Serialize))] #[cfg_attr(feature = "std", derive(Decode, Debug, Serialize))]
pub struct RuntimeMetadataV1 { pub struct RuntimeMetadataV2 {
pub modules: DecodeDifferentArray<ModuleMetadata>, pub modules: DecodeDifferentArray<ModuleMetadata>,
} }
@@ -700,12 +700,13 @@ fn store_functions_to_metadata (
) )
} }
}, },
DeclStorageTypeInfosKind::Map { key_type, .. } => { DeclStorageTypeInfosKind::Map { key_type, is_linked } => {
let kty = clean_type_string(&quote!(#key_type).to_string()); let kty = clean_type_string(&quote!(#key_type).to_string());
quote!{ quote!{
#scrate::storage::generator::StorageFunctionType::Map { #scrate::storage::generator::StorageFunctionType::Map {
key: #scrate::storage::generator::DecodeDifferent::Encode(#kty), key: #scrate::storage::generator::DecodeDifferent::Encode(#kty),
value: #scrate::storage::generator::DecodeDifferent::Encode(#styp), value: #scrate::storage::generator::DecodeDifferent::Encode(#styp),
is_linked: #is_linked,
} }
} }
}, },
+5 -5
View File
@@ -16,7 +16,7 @@
pub use srml_metadata::{ pub use srml_metadata::{
DecodeDifferent, FnEncode, RuntimeMetadata, DecodeDifferent, FnEncode, RuntimeMetadata,
ModuleMetadata, RuntimeMetadataV1, ModuleMetadata, RuntimeMetadataV2,
DefaultByteGetter, RuntimeMetadataPrefixed, DefaultByteGetter, RuntimeMetadataPrefixed,
}; };
@@ -36,8 +36,8 @@ macro_rules! impl_runtime_metadata {
) => { ) => {
impl $runtime { impl $runtime {
pub fn metadata() -> $crate::metadata::RuntimeMetadataPrefixed { pub fn metadata() -> $crate::metadata::RuntimeMetadataPrefixed {
$crate::metadata::RuntimeMetadata::V1 ( $crate::metadata::RuntimeMetadata::V2 (
$crate::metadata::RuntimeMetadataV1 { $crate::metadata::RuntimeMetadataV2 {
modules: $crate::__runtime_modules_to_metadata!($runtime;; $( $rest )*), modules: $crate::__runtime_modules_to_metadata!($runtime;; $( $rest )*),
} }
).into() ).into()
@@ -377,8 +377,8 @@ mod tests {
event_module2::Module with Event Storage Call, event_module2::Module with Event Storage Call,
); );
const EXPECTED_METADATA: RuntimeMetadata = RuntimeMetadata::V1( const EXPECTED_METADATA: RuntimeMetadata = RuntimeMetadata::V2(
RuntimeMetadataV1 { RuntimeMetadataV2 {
modules: DecodeDifferent::Encode(&[ modules: DecodeDifferent::Encode(&[
ModuleMetadata { ModuleMetadata {
name: DecodeDifferent::Encode("system"), name: DecodeDifferent::Encode("system"),
+90 -16
View File
@@ -667,6 +667,12 @@ mod tests {
GETMAPU32MYDEF get(map_u32_getter_mydef): map u32 => String = "map".into(); GETMAPU32MYDEF get(map_u32_getter_mydef): map u32 => String = "map".into();
pub PUBGETMAPU32MYDEF get(pub_map_u32_getter_mydef): map u32 => String = "pubmap".into(); pub PUBGETMAPU32MYDEF get(pub_map_u32_getter_mydef): map u32 => String = "pubmap".into();
// linked map
LINKEDMAPU32 : linked_map u32 => Option<String>;
pub PUBLINKEDMAPU32MYDEF : linked_map u32 => Option<String> = Some("hello".into());
GETLINKEDMAPU32 get(linked_map_u32_getter): linked_map u32 => String;
pub PUBGETLINKEDMAPU32MYDEF get(pub_linked_map_u32_getter_mydef): linked_map u32 => String = "pubmap".into();
COMPLEXTYPE1: ::std::vec::Vec<<T as Trait>::Origin>; COMPLEXTYPE1: ::std::vec::Vec<<T as Trait>::Origin>;
COMPLEXTYPE2: (Vec<Vec<(u16,Box<( )>)>>, u32); COMPLEXTYPE2: (Vec<Vec<(u16,Box<( )>)>>, u32);
COMPLEXTYPE3: ([u32;25]); COMPLEXTYPE3: ([u32;25]);
@@ -806,8 +812,10 @@ mod tests {
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("MAPU32"), name: DecodeDifferent::Encode("MAPU32"),
modifier: StorageFunctionModifier::Optional, modifier: StorageFunctionModifier::Optional,
ty: StorageFunctionType::Map{ ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"), value: DecodeDifferent::Encode("String") key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: false,
}, },
default: DecodeDifferent::Encode( default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructMAPU32(PhantomData::<TraitImpl>)) DefaultByteGetter(&__GetByteStructMAPU32(PhantomData::<TraitImpl>))
@@ -817,8 +825,10 @@ mod tests {
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("PUBMAPU32"), name: DecodeDifferent::Encode("PUBMAPU32"),
modifier: StorageFunctionModifier::Optional, modifier: StorageFunctionModifier::Optional,
ty: StorageFunctionType::Map{ ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"), value: DecodeDifferent::Encode("String") key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: false,
}, },
default: DecodeDifferent::Encode( default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructPUBMAPU32(PhantomData::<TraitImpl>)) DefaultByteGetter(&__GetByteStructPUBMAPU32(PhantomData::<TraitImpl>))
@@ -828,8 +838,10 @@ mod tests {
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("MAPU32MYDEF"), name: DecodeDifferent::Encode("MAPU32MYDEF"),
modifier: StorageFunctionModifier::Optional, modifier: StorageFunctionModifier::Optional,
ty: StorageFunctionType::Map{ ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"), value: DecodeDifferent::Encode("String") key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: false,
}, },
default: DecodeDifferent::Encode( default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructMAPU32MYDEF(PhantomData::<TraitImpl>)) DefaultByteGetter(&__GetByteStructMAPU32MYDEF(PhantomData::<TraitImpl>))
@@ -839,8 +851,10 @@ mod tests {
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("PUBMAPU32MYDEF"), name: DecodeDifferent::Encode("PUBMAPU32MYDEF"),
modifier: StorageFunctionModifier::Optional, modifier: StorageFunctionModifier::Optional,
ty: StorageFunctionType::Map{ ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"), value: DecodeDifferent::Encode("String") key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: false,
}, },
default: DecodeDifferent::Encode( default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructPUBMAPU32MYDEF(PhantomData::<TraitImpl>)) DefaultByteGetter(&__GetByteStructPUBMAPU32MYDEF(PhantomData::<TraitImpl>))
@@ -850,8 +864,10 @@ mod tests {
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("GETMAPU32"), name: DecodeDifferent::Encode("GETMAPU32"),
modifier: StorageFunctionModifier::Default, modifier: StorageFunctionModifier::Default,
ty: StorageFunctionType::Map{ ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"), value: DecodeDifferent::Encode("String") key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: false,
}, },
default: DecodeDifferent::Encode( default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructGETMAPU32(PhantomData::<TraitImpl>)) DefaultByteGetter(&__GetByteStructGETMAPU32(PhantomData::<TraitImpl>))
@@ -861,8 +877,10 @@ mod tests {
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("PUBGETMAPU32"), name: DecodeDifferent::Encode("PUBGETMAPU32"),
modifier: StorageFunctionModifier::Default, modifier: StorageFunctionModifier::Default,
ty: StorageFunctionType::Map{ ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"), value: DecodeDifferent::Encode("String") key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: false,
}, },
default: DecodeDifferent::Encode( default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructPUBGETMAPU32(PhantomData::<TraitImpl>)) DefaultByteGetter(&__GetByteStructPUBGETMAPU32(PhantomData::<TraitImpl>))
@@ -872,8 +890,10 @@ mod tests {
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("GETMAPU32MYDEF"), name: DecodeDifferent::Encode("GETMAPU32MYDEF"),
modifier: StorageFunctionModifier::Default, modifier: StorageFunctionModifier::Default,
ty: StorageFunctionType::Map{ ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"), value: DecodeDifferent::Encode("String") key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: false,
}, },
default: DecodeDifferent::Encode( default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructGETMAPU32MYDEF(PhantomData::<TraitImpl>)) DefaultByteGetter(&__GetByteStructGETMAPU32MYDEF(PhantomData::<TraitImpl>))
@@ -883,14 +903,68 @@ mod tests {
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("PUBGETMAPU32MYDEF"), name: DecodeDifferent::Encode("PUBGETMAPU32MYDEF"),
modifier: StorageFunctionModifier::Default, modifier: StorageFunctionModifier::Default,
ty: StorageFunctionType::Map{ ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"), value: DecodeDifferent::Encode("String") key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: false,
}, },
default: DecodeDifferent::Encode( default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructPUBGETMAPU32MYDEF(PhantomData::<TraitImpl>)) DefaultByteGetter(&__GetByteStructPUBGETMAPU32MYDEF(PhantomData::<TraitImpl>))
), ),
documentation: DecodeDifferent::Encode(&[]), documentation: DecodeDifferent::Encode(&[]),
}, },
StorageFunctionMetadata {
name: DecodeDifferent::Encode("LINKEDMAPU32"),
modifier: StorageFunctionModifier::Optional,
ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: true,
},
default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructLINKEDMAPU32(PhantomData::<TraitImpl>))
),
documentation: DecodeDifferent::Encode(&[]),
},
StorageFunctionMetadata {
name: DecodeDifferent::Encode("PUBLINKEDMAPU32MYDEF"),
modifier: StorageFunctionModifier::Optional,
ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: true,
},
default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructPUBLINKEDMAPU32MYDEF(PhantomData::<TraitImpl>))
),
documentation: DecodeDifferent::Encode(&[]),
},
StorageFunctionMetadata {
name: DecodeDifferent::Encode("GETLINKEDMAPU32"),
modifier: StorageFunctionModifier::Default,
ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: true,
},
default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructGETLINKEDMAPU32(PhantomData::<TraitImpl>))
),
documentation: DecodeDifferent::Encode(&[]),
},
StorageFunctionMetadata {
name: DecodeDifferent::Encode("PUBGETLINKEDMAPU32MYDEF"),
modifier: StorageFunctionModifier::Default,
ty: StorageFunctionType::Map {
key: DecodeDifferent::Encode("u32"),
value: DecodeDifferent::Encode("String"),
is_linked: true,
},
default: DecodeDifferent::Encode(
DefaultByteGetter(&__GetByteStructPUBGETLINKEDMAPU32MYDEF(PhantomData::<TraitImpl>))
),
documentation: DecodeDifferent::Encode(&[]),
},
StorageFunctionMetadata { StorageFunctionMetadata {
name: DecodeDifferent::Encode("COMPLEXTYPE1"), name: DecodeDifferent::Encode("COMPLEXTYPE1"),
modifier: StorageFunctionModifier::Default, modifier: StorageFunctionModifier::Default,