github.com/cosmos/cosmos-sdk@v0.50.10/x/group/keeper/genesis.go (about)

     1  package keeper
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	abci "github.com/cometbft/cometbft/abci/types"
     7  
     8  	"cosmossdk.io/errors"
     9  
    10  	"github.com/cosmos/cosmos-sdk/codec"
    11  	"github.com/cosmos/cosmos-sdk/types"
    12  	"github.com/cosmos/cosmos-sdk/x/group"
    13  )
    14  
    15  // InitGenesis initializes the group module's genesis state.
    16  func (k Keeper) InitGenesis(ctx types.Context, cdc codec.JSONCodec, data json.RawMessage) []abci.ValidatorUpdate {
    17  	var genesisState group.GenesisState
    18  	cdc.MustUnmarshalJSON(data, &genesisState)
    19  
    20  	if err := k.groupTable.Import(ctx.KVStore(k.key), genesisState.Groups, genesisState.GroupSeq); err != nil {
    21  		panic(errors.Wrap(err, "groups"))
    22  	}
    23  
    24  	if err := k.groupMemberTable.Import(ctx.KVStore(k.key), genesisState.GroupMembers, 0); err != nil {
    25  		panic(errors.Wrap(err, "group members"))
    26  	}
    27  
    28  	if err := k.groupPolicyTable.Import(ctx.KVStore(k.key), genesisState.GroupPolicies, 0); err != nil {
    29  		panic(errors.Wrap(err, "group policies"))
    30  	}
    31  
    32  	if err := k.groupPolicySeq.InitVal(ctx.KVStore(k.key), genesisState.GroupPolicySeq); err != nil {
    33  		panic(errors.Wrap(err, "group policy account seq"))
    34  	}
    35  
    36  	if err := k.proposalTable.Import(ctx.KVStore(k.key), genesisState.Proposals, genesisState.ProposalSeq); err != nil {
    37  		panic(errors.Wrap(err, "proposals"))
    38  	}
    39  
    40  	if err := k.voteTable.Import(ctx.KVStore(k.key), genesisState.Votes, 0); err != nil {
    41  		panic(errors.Wrap(err, "votes"))
    42  	}
    43  
    44  	return []abci.ValidatorUpdate{}
    45  }
    46  
    47  // ExportGenesis returns the group module's exported genesis.
    48  func (k Keeper) ExportGenesis(ctx types.Context, _ codec.JSONCodec) *group.GenesisState {
    49  	genesisState := group.NewGenesisState()
    50  
    51  	var groups []*group.GroupInfo
    52  
    53  	groupSeq, err := k.groupTable.Export(ctx.KVStore(k.key), &groups)
    54  	if err != nil {
    55  		panic(errors.Wrap(err, "groups"))
    56  	}
    57  	genesisState.Groups = groups
    58  	genesisState.GroupSeq = groupSeq
    59  
    60  	var groupMembers []*group.GroupMember
    61  	_, err = k.groupMemberTable.Export(ctx.KVStore(k.key), &groupMembers)
    62  	if err != nil {
    63  		panic(errors.Wrap(err, "group members"))
    64  	}
    65  	genesisState.GroupMembers = groupMembers
    66  
    67  	var groupPolicies []*group.GroupPolicyInfo
    68  	_, err = k.groupPolicyTable.Export(ctx.KVStore(k.key), &groupPolicies)
    69  	if err != nil {
    70  		panic(errors.Wrap(err, "group policies"))
    71  	}
    72  	genesisState.GroupPolicies = groupPolicies
    73  	genesisState.GroupPolicySeq = k.groupPolicySeq.CurVal(ctx.KVStore(k.key))
    74  
    75  	var proposals []*group.Proposal
    76  	proposalSeq, err := k.proposalTable.Export(ctx.KVStore(k.key), &proposals)
    77  	if err != nil {
    78  		panic(errors.Wrap(err, "proposals"))
    79  	}
    80  	genesisState.Proposals = proposals
    81  	genesisState.ProposalSeq = proposalSeq
    82  
    83  	var votes []*group.Vote
    84  	_, err = k.voteTable.Export(ctx.KVStore(k.key), &votes)
    85  	if err != nil {
    86  		panic(errors.Wrap(err, "votes"))
    87  	}
    88  	genesisState.Votes = votes
    89  
    90  	return genesisState
    91  }