github.com/cosmos/cosmos-sdk@v0.50.10/x/group/simulation/decoder.go (about) 1 package simulation 2 3 import ( 4 "bytes" 5 "fmt" 6 7 "github.com/cosmos/cosmos-sdk/codec" 8 "github.com/cosmos/cosmos-sdk/types/kv" 9 "github.com/cosmos/cosmos-sdk/x/group" 10 "github.com/cosmos/cosmos-sdk/x/group/keeper" 11 ) 12 13 // NewDecodeStore returns a decoder function closure that unmarshals the KVPair's 14 // Value to the corresponding group type. 15 func NewDecodeStore(cdc codec.Codec) func(kvA, kvB kv.Pair) string { 16 return func(kvA, kvB kv.Pair) string { 17 switch { 18 case bytes.Equal(kvA.Key[:1], []byte{keeper.GroupTablePrefix}): 19 var groupA, groupB group.GroupInfo 20 21 cdc.MustUnmarshal(kvA.Value, &groupA) 22 cdc.MustUnmarshal(kvB.Value, &groupB) 23 24 return fmt.Sprintf("%v\n%v", groupA, groupB) 25 case bytes.Equal(kvA.Key[:1], []byte{keeper.GroupMemberTablePrefix}): 26 var memberA, memberB group.GroupMember 27 28 cdc.MustUnmarshal(kvA.Value, &memberA) 29 cdc.MustUnmarshal(kvB.Value, &memberB) 30 31 return fmt.Sprintf("%v\n%v", memberA, memberB) 32 case bytes.Equal(kvA.Key[:1], []byte{keeper.GroupPolicyTablePrefix}): 33 var accA, accB group.GroupPolicyInfo 34 35 cdc.MustUnmarshal(kvA.Value, &accA) 36 cdc.MustUnmarshal(kvB.Value, &accB) 37 38 return fmt.Sprintf("%v\n%v", accA, accB) 39 case bytes.Equal(kvA.Key[:1], []byte{keeper.ProposalTablePrefix}): 40 var propA, propB group.Proposal 41 42 cdc.MustUnmarshal(kvA.Value, &propA) 43 cdc.MustUnmarshal(kvB.Value, &propB) 44 45 return fmt.Sprintf("%v\n%v", propA, propB) 46 case bytes.Equal(kvA.Key[:1], []byte{keeper.VoteTablePrefix}): 47 var voteA, voteB group.Vote 48 49 cdc.MustUnmarshal(kvA.Value, &voteA) 50 cdc.MustUnmarshal(kvB.Value, &voteB) 51 52 return fmt.Sprintf("%v\n%v", voteA, voteB) 53 default: 54 panic(fmt.Sprintf("invalid group key %X", kvA.Key)) 55 } 56 } 57 }