diff --git a/x/dao/keeper/query_get_reissuances.go b/x/dao/keeper/query_get_reissuances.go index b894501..2a859ba 100644 --- a/x/dao/keeper/query_get_reissuances.go +++ b/x/dao/keeper/query_get_reissuances.go @@ -16,8 +16,9 @@ func (k Keeper) GetReissuances(goCtx context.Context, req *types.QueryGetReissua ctx := sdk.UnwrapSDKContext(goCtx) - // TODO: Process the query - _ = ctx + reissuances := k.getReissuancesPage(ctx, req.Pagination.GetKey(), + req.Pagination.GetOffset(), req.Pagination.GetLimit(), + req.Pagination.GetCountTotal(), req.Pagination.GetReverse()) - return &types.QueryGetReissuancesResponse{}, nil + return &types.QueryGetReissuancesResponse{Reissuance: &reissuances[0]}, nil } diff --git a/x/dao/keeper/reissuance.go b/x/dao/keeper/reissuance.go index f83c928..b425245 100644 --- a/x/dao/keeper/reissuance.go +++ b/x/dao/keeper/reissuance.go @@ -24,6 +24,25 @@ func (k Keeper) LookupReissuance(ctx sdk.Context, height uint64) (val types.Reis return val, true } +func (k Keeper) getReissuancesPage(ctx sdk.Context, key []byte, offset uint64, page_size uint64, all bool, reverse bool) (reissuances []types.Reissuance) { + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.ReissuanceBlockHeightKey)) + + iterator := store.Iterator(nil, nil) + defer iterator.Close() + if reverse { + iterator = store.ReverseIterator(nil, nil) + defer iterator.Close() + } + + for ; iterator.Valid(); iterator.Next() { + reissuance := iterator.Value() + var reissuance_org types.Reissuance + k.cdc.MustUnmarshal(reissuance, &reissuance_org) + reissuances = append(reissuances, reissuance_org) + } + return reissuances +} + func getReissuanceBytes(height uint64) []byte { // Adding 1 because 0 will be interpreted as nil, which is an invalid key return big.NewInt(int64(height + 1)).Bytes()