github.com/Finschia/finschia-sdk@v0.49.1/x/fswap/keeper/genesis.go (about)

     1  package keeper
     2  
     3  import (
     4  	sdk "github.com/Finschia/finschia-sdk/types"
     5  	"github.com/Finschia/finschia-sdk/x/fswap/types"
     6  )
     7  
     8  // InitGenesis initializes the module's state from a provided genesis state.
     9  func (k Keeper) InitGenesis(ctx sdk.Context, genState *types.GenesisState) error {
    10  	if err := genState.Validate(); err != nil {
    11  		return err
    12  	}
    13  
    14  	if len(genState.GetSwaps()) > k.config.MaxSwaps && !k.isUnlimited() {
    15  		return types.ErrCanNotHaveMoreSwap.Wrapf("cannot initialize genesis state, there are more than %d swaps", k.config.MaxSwaps)
    16  	}
    17  
    18  	if len(genState.GetSwappeds()) > k.config.MaxSwaps && !k.isUnlimited() {
    19  		return types.ErrCanNotHaveMoreSwap.Wrapf("cannot initialize genesis state, there are more than %d swapped", k.config.MaxSwaps)
    20  	}
    21  
    22  	if err := k.setSwapStats(ctx, genState.GetSwapStats()); err != nil {
    23  		return err
    24  	}
    25  
    26  	for _, swap := range genState.GetSwaps() {
    27  		if err := k.setSwap(ctx, swap); err != nil {
    28  			panic(err)
    29  		}
    30  	}
    31  
    32  	for _, swapped := range genState.GetSwappeds() {
    33  		err := k.setSwapped(ctx, swapped)
    34  		if err != nil {
    35  			return err
    36  		}
    37  	}
    38  
    39  	return nil
    40  }
    41  
    42  func (k Keeper) isUnlimited() bool {
    43  	return k.config.MaxSwaps == 0
    44  }
    45  
    46  // ExportGenesis returns the module's exported genesis.
    47  func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState {
    48  	stats, err := k.getSwapStats(ctx)
    49  	if err != nil {
    50  		panic(err)
    51  	}
    52  	return &types.GenesisState{
    53  		Swaps:     k.getAllSwaps(ctx),
    54  		SwapStats: stats,
    55  		Swappeds:  k.getAllSwapped(ctx),
    56  	}
    57  }