github.com/Finschia/finschia-sdk@v0.48.1/x/foundation/keeper/internal/genesis.go (about)

     1  package internal
     2  
     3  import (
     4  	sdk "github.com/Finschia/finschia-sdk/types"
     5  	"github.com/Finschia/finschia-sdk/x/foundation"
     6  )
     7  
     8  func (k Keeper) InitGenesis(ctx sdk.Context, data *foundation.GenesisState) error {
     9  	k.SetParams(ctx, data.Params)
    10  
    11  	k.SetFoundationInfo(ctx, data.Foundation)
    12  
    13  	k.setPreviousProposalID(ctx, data.PreviousProposalId)
    14  
    15  	for _, member := range data.Members {
    16  		if err := validateMetadata(member.Metadata, k.config); err != nil {
    17  			return err
    18  		}
    19  
    20  		k.SetMember(ctx, member)
    21  	}
    22  
    23  	for _, proposal := range data.Proposals {
    24  		if err := validateMetadata(proposal.Metadata, k.config); err != nil {
    25  			return err
    26  		}
    27  
    28  		k.setProposal(ctx, proposal)
    29  		k.addProposalToVPEndQueue(ctx, proposal)
    30  	}
    31  
    32  	for _, vote := range data.Votes {
    33  		if err := validateMetadata(vote.Metadata, k.config); err != nil {
    34  			return err
    35  		}
    36  
    37  		k.setVote(ctx, vote)
    38  	}
    39  
    40  	for _, censorship := range data.Censorships {
    41  		k.SetCensorship(ctx, censorship)
    42  	}
    43  
    44  	for _, ga := range data.Authorizations {
    45  		grantee := sdk.MustAccAddressFromBech32(ga.Grantee)
    46  		k.setAuthorization(ctx, grantee, ga.GetAuthorization())
    47  	}
    48  
    49  	k.SetPool(ctx, data.Pool)
    50  
    51  	return nil
    52  }
    53  
    54  func (k Keeper) ExportGenesis(ctx sdk.Context) *foundation.GenesisState {
    55  	info := k.GetFoundationInfo(ctx)
    56  	proposals := k.GetProposals(ctx)
    57  
    58  	var votes []foundation.Vote
    59  	for _, proposal := range proposals {
    60  		votes = append(votes, k.GetVotes(ctx, proposal.Id)...)
    61  	}
    62  
    63  	return &foundation.GenesisState{
    64  		Params:             k.GetParams(ctx),
    65  		Foundation:         info,
    66  		Members:            k.GetMembers(ctx),
    67  		PreviousProposalId: k.getPreviousProposalID(ctx),
    68  		Proposals:          proposals,
    69  		Votes:              votes,
    70  		Censorships:        k.GetCensorships(ctx),
    71  		Authorizations:     k.GetGrants(ctx),
    72  		Pool:               k.GetPool(ctx),
    73  	}
    74  }
    75  
    76  func (k Keeper) GetCensorships(ctx sdk.Context) []foundation.Censorship {
    77  	var censorships []foundation.Censorship
    78  	k.iterateCensorships(ctx, func(censorship foundation.Censorship) (stop bool) {
    79  		censorships = append(censorships, censorship)
    80  
    81  		return false
    82  	})
    83  	return censorships
    84  }
    85  
    86  func (k Keeper) GetGrants(ctx sdk.Context) []foundation.GrantAuthorization {
    87  	var grantAuthorizations []foundation.GrantAuthorization
    88  	k.iterateAuthorizations(ctx, func(grantee sdk.AccAddress, authorization foundation.Authorization) (stop bool) {
    89  		grantAuthorization := foundation.GrantAuthorization{
    90  			Grantee: grantee.String(),
    91  		}
    92  		if err := grantAuthorization.SetAuthorization(authorization); err != nil {
    93  			panic(err)
    94  		}
    95  		grantAuthorizations = append(grantAuthorizations, grantAuthorization)
    96  
    97  		return false
    98  	})
    99  	return grantAuthorizations
   100  }