mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-07-01 18:32:31 +00:00

* ignite scaffold map redeem-claim amount issued:bool --module dao --index beneficiary,liquid-tx-hash * revert: remove autogenerated delete redeem claim logic * fix: replace deprecated autogenerated sdkerrors with errorsmod * refactor: rename issued to confirmed on redeem claim * feat: add claim address param * test: add test for restricted msg UpdateRedeemClaim * refactor: update redeem claim key creation and messages * feat: add SendUpdateRedeemCLaim to util * feat: add RedeemClaimDecorator for ante package * ignite scaffold message confirm-redeem-claim id:uint beneficiary:string --module dao * feat: add handleConfirmRedeemClaim to ante handler * feat: add handleUpdateRedeemClaim to ante handler * feat: implement ConfirmRedeemClaim msg handler * test: add redeem claim test and adjust e2e test suite * fix: make use of uint to rddl string util in CreateRedeemClaim * fix: linter and staticcheck errors * ignite scaffold query redeem-claim-by-liquid-tx-hash liquid-tx-hash --response redeem-claim:RedeemClaim --module dao * feat: add RedeemClaimByLiquidTXHash store capabilities * test: add QueryRedeemClaimByLiquidTxHash to e2e test suite * feat: add RedeemClaimDecorator to ante handler chain * fix: remove redundant planetmint-go from service path * fix: linter and staticcheck errors * fix: go vet errors * fix: remove unused autogenerated simulation * fix: broken simulation * fix: openapi.yml * revert: remove autogenerated redundant test file that causes data race on pipeline * feat: burn claim on CreateRedeemClaim * fix: linter error * test: fix mock bankkeeper for msg server test * fix: reissuance test if statement * chore: removed TODO comment * fix: typo in redeem claim error msg * revert: remove autogenerated genesis state * fix: dao module simulation * revert: remove unused function * fix: linter errors * fix: linter error --------- Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
119 lines
3.6 KiB
Go
119 lines
3.6 KiB
Go
package keeper
|
|
|
|
import (
|
|
"encoding/binary"
|
|
|
|
"github.com/cosmos/cosmos-sdk/store/prefix"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/planetmint/planetmint-go/x/dao/types"
|
|
)
|
|
|
|
// GetBeneficiaryRedeemClaimCount get the total number of RedeemClaim for a beneficiary
|
|
func (k Keeper) GetBeneficiaryRedeemClaimCount(ctx sdk.Context, beneficiary string) uint64 {
|
|
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.RedeemClaimBeneficiaryCountKeyPrefix))
|
|
byteKey := types.KeyPrefix(beneficiary)
|
|
bz := store.Get(byteKey)
|
|
|
|
// Count doesn't exist: no element
|
|
if bz == nil {
|
|
return 0
|
|
}
|
|
|
|
// Parse bytes
|
|
return binary.BigEndian.Uint64(bz)
|
|
}
|
|
|
|
// SetBeneficiaryRedeemClaimCount set the total number of RedeemClaim for beneficiary
|
|
func (k Keeper) SetBeneficiaryRedeemClaimCount(ctx sdk.Context, beneficiary string, count uint64) {
|
|
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.RedeemClaimBeneficiaryCountKeyPrefix))
|
|
byteKey := types.KeyPrefix(beneficiary)
|
|
bz := make([]byte, 8)
|
|
binary.BigEndian.PutUint64(bz, count)
|
|
store.Set(byteKey, bz)
|
|
}
|
|
|
|
// SetRedeemClaim set a specific redeemClaim in the store from its index
|
|
func (k Keeper) SetRedeemClaim(ctx sdk.Context, redeemClaim types.RedeemClaim) {
|
|
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.RedeemClaimKeyPrefix))
|
|
b := k.cdc.MustMarshal(&redeemClaim)
|
|
|
|
if redeemClaim.LiquidTxHash != "" {
|
|
k.SetRedeemClaimByLiquidTXHash(ctx, redeemClaim)
|
|
}
|
|
|
|
store.Set(types.RedeemClaimKey(
|
|
redeemClaim.Beneficiary,
|
|
redeemClaim.Id,
|
|
), b)
|
|
}
|
|
|
|
// SetRedeemClaimByLiquidTXHash set a specific redeemClaim in the store from its index
|
|
func (k Keeper) SetRedeemClaimByLiquidTXHash(ctx sdk.Context, redeemClaim types.RedeemClaim) {
|
|
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.RedeemClaimLiquidTXKeyPrefix))
|
|
b := k.cdc.MustMarshal(&redeemClaim)
|
|
byteKey := types.KeyPrefix(redeemClaim.LiquidTxHash)
|
|
store.Set(byteKey, b)
|
|
}
|
|
|
|
// GetRedeemClaimByLiquidTXHash returns a redeemClaim from its index
|
|
func (k Keeper) GetRedeemClaimByLiquidTXHash(ctx sdk.Context, liquidTXHash string) (val types.RedeemClaim, found bool) {
|
|
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.RedeemClaimLiquidTXKeyPrefix))
|
|
b := store.Get(types.KeyPrefix(liquidTXHash))
|
|
if b == nil {
|
|
return val, false
|
|
}
|
|
|
|
k.cdc.MustUnmarshal(b, &val)
|
|
return val, true
|
|
}
|
|
|
|
// CreateNewRedeemClaim creates a specific redeemClaim in the store from its index
|
|
func (k Keeper) CreateNewRedeemClaim(ctx sdk.Context, redeemClaim types.RedeemClaim) uint64 {
|
|
count := k.GetBeneficiaryRedeemClaimCount(ctx, redeemClaim.Beneficiary)
|
|
|
|
redeemClaim.Id = count
|
|
k.SetRedeemClaim(ctx, redeemClaim)
|
|
|
|
// Update BeneficiaryRedeemCount
|
|
k.SetBeneficiaryRedeemClaimCount(ctx, redeemClaim.Beneficiary, count+1)
|
|
|
|
return count
|
|
}
|
|
|
|
// GetRedeemClaim returns a redeemClaim from its index
|
|
func (k Keeper) GetRedeemClaim(
|
|
ctx sdk.Context,
|
|
beneficiary string,
|
|
id uint64,
|
|
|
|
) (val types.RedeemClaim, found bool) {
|
|
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.RedeemClaimKeyPrefix))
|
|
|
|
b := store.Get(types.RedeemClaimKey(
|
|
beneficiary,
|
|
id,
|
|
))
|
|
if b == nil {
|
|
return val, false
|
|
}
|
|
|
|
k.cdc.MustUnmarshal(b, &val)
|
|
return val, true
|
|
}
|
|
|
|
// GetAllRedeemClaim returns all redeemClaim
|
|
func (k Keeper) GetAllRedeemClaim(ctx sdk.Context) (list []types.RedeemClaim) {
|
|
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.RedeemClaimKeyPrefix))
|
|
iterator := sdk.KVStorePrefixIterator(store, []byte{})
|
|
|
|
defer iterator.Close()
|
|
|
|
for ; iterator.Valid(); iterator.Next() {
|
|
var val types.RedeemClaim
|
|
k.cdc.MustUnmarshal(iterator.Value(), &val)
|
|
list = append(list, val)
|
|
}
|
|
|
|
return
|
|
}
|