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 }