paritytech / substrate-debug-kit

A collection of debug tools, scripts and libraries on top of substrate.
GNU General Public License v3.0
95 stars 36 forks source link

Use internal client + expose macros #19

Open kianenigma opened 4 years ago

kianenigma commented 4 years ago

The entire interface to sub-storage depends on client and at. alternatively, sub-storage could create its own internal client. The user would have to call into sub_storage::init_client(URI).await once and henceforth it would be used.

I am not yet sure if this is a correct api design as well, but it is indeed easier.

This would allow us to macro-ify the crate as well, such as:

let a: Type = sub_storage::value!("ModuleName", "StorageName").await;
let b: Type = sub_storage::map!("ModuleName", "StorageName", key).await;

// optionally
let b: Type = sub_storage::map_at!("ModuleName", "StorageName", key, hash).await;

Which is not really pretty now given that we have to pass in a client inwards as well.