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  }