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  }