1
1
use schemars:: JsonSchema ;
2
- use serde:: { Deserialize , Serialize } ;
2
+ use serde:: { Deserialize , Deserializer , Serialize } ;
3
3
4
4
use crate :: prelude:: * ;
5
5
6
6
/// Replicates the cosmos-sdk bank module Metadata type
7
7
#[ derive( Serialize , Deserialize , Clone , Default , Debug , PartialEq , Eq , JsonSchema ) ]
8
8
pub struct DenomMetadata {
9
9
pub description : String ,
10
+ #[ serde( deserialize_with = "deserialize_null_default" ) ]
10
11
pub denom_units : Vec < DenomUnit > ,
11
12
pub base : String ,
12
13
pub display : String ,
@@ -21,27 +22,15 @@ pub struct DenomMetadata {
21
22
pub struct DenomUnit {
22
23
pub denom : String ,
23
24
pub exponent : u32 ,
25
+ #[ serde( deserialize_with = "deserialize_null_default" ) ]
24
26
pub aliases : Vec < String > ,
25
27
}
26
28
27
- #[ derive( Serialize , Deserialize , Clone , Default , Debug , PartialEq , Eq , JsonSchema ) ]
28
- pub struct NullableDenomMetadata {
29
- pub description : String ,
30
- // denom_units is nullable: https://github.com/cosmos/cosmos-sdk/blob/main/api/cosmos/bank/v1beta1/bank.pulsar.go#L4539
31
- pub denom_units : Option < Vec < NullableDenomUnit > > ,
32
- pub base : String ,
33
- pub display : String ,
34
- pub name : String ,
35
- pub symbol : String ,
36
- pub uri : String ,
37
- pub uri_hash : String ,
38
- }
39
-
40
- /// Replicates the cosmos-sdk bank module DenomUnit type
41
- #[ derive( Serialize , Deserialize , Clone , Default , Debug , PartialEq , Eq , JsonSchema ) ]
42
- pub struct NullableDenomUnit {
43
- pub denom : String ,
44
- pub exponent : u32 ,
45
- // aliases is nullable: https://github.com/cosmos/cosmos-sdk/blob/main/api/cosmos/bank/v1beta1/bank.pulsar.go#L4478
46
- pub aliases : Option < Vec < String > > ,
29
+ fn deserialize_null_default < ' de , D , T > ( deserializer : D ) -> Result < T , D :: Error >
30
+ where
31
+ T : Default + Deserialize < ' de > ,
32
+ D : Deserializer < ' de > ,
33
+ {
34
+ let opt = Option :: deserialize ( deserializer) ?;
35
+ Ok ( opt. unwrap_or_default ( ) )
47
36
}
0 commit comments