github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/keeper/delegator.go (about) 1 package keeper 2 3 import ( 4 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 5 "github.com/fibonacci-chain/fbc/x/staking/types" 6 ) 7 8 // GetDelegator gets Delegator entity from store 9 func (k Keeper) GetDelegator(ctx sdk.Context, delAddr sdk.AccAddress) (delegator types.Delegator, found bool) { 10 bytes := ctx.KVStore(k.storeKey).Get(types.GetDelegatorKey(delAddr)) 11 if bytes == nil { 12 return delegator, false 13 } 14 15 delegator = types.MustUnMarshalDelegator(k.cdcMarshl.GetCdc(), bytes) 16 return delegator, true 17 } 18 19 // SetDelegator sets Delegator info to store 20 func (k Keeper) SetDelegator(ctx sdk.Context, delegator types.Delegator) { 21 key := types.GetDelegatorKey(delegator.DelegatorAddress) 22 bytes := k.cdcMarshl.GetCdc().MustMarshalBinaryLengthPrefixed(delegator) 23 ctx.KVStore(k.storeKey).Set(key, bytes) 24 } 25 26 // DeleteDelegator deletes Delegator info from store 27 func (k Keeper) DeleteDelegator(ctx sdk.Context, delAddr sdk.AccAddress) { 28 ctx.KVStore(k.storeKey).Delete(types.GetDelegatorKey(delAddr)) 29 } 30 31 // IterateDelegator iterates through all of the delegators info from the store 32 func (k Keeper) IterateDelegator(ctx sdk.Context, fn func(index int64, delegator types.Delegator) (stop bool)) { 33 store := ctx.KVStore(k.storeKey) 34 iterator := sdk.KVStorePrefixIterator(store, types.DelegatorKey) 35 defer iterator.Close() 36 37 for i := int64(0); iterator.Valid(); iterator.Next() { 38 var delegator types.Delegator 39 k.cdcMarshl.GetCdc().MustUnmarshalBinaryLengthPrefixed(iterator.Value(), &delegator) 40 if stop := fn(i, delegator); stop { 41 break 42 } 43 i++ 44 } 45 }