github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/order/keeper/keeper_dump.go (about)

     1  package keeper
     2  
     3  import (
     4  	"fmt"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  	"github.com/fibonacci-chain/fbc/libs/tendermint/libs/log"
     8  	"github.com/fibonacci-chain/fbc/x/common"
     9  	"github.com/fibonacci-chain/fbc/x/order/types"
    10  )
    11  
    12  // DumpStore dumps all key-value message from KVStore
    13  func (k Keeper) DumpStore(ctx sdk.Context) {
    14  
    15  	logger := ctx.Logger().With("module", "order")
    16  
    17  	orderStore := ctx.KVStore(k.orderStoreKey)
    18  	orderIDs := []string{}
    19  
    20  	dumpStringHandler := func(key string, it sdk.Iterator, v interface{}) {
    21  		logger.Error(fmt.Sprintf("%s: <%s> -> <%v>", key, types.GetKey(it), v))
    22  	}
    23  
    24  	dumpIntHandler := func(key string, it sdk.Iterator, v interface{}) {
    25  		logger.Error(fmt.Sprintf("%s: <%v> -> <%v>", key, common.BytesToInt64(it.Key()[1:]), v))
    26  	}
    27  
    28  	dumpKvIntHandler := func(key string, it sdk.Iterator, v interface{}) {
    29  		logger.Error(fmt.Sprintf("%s: <%v> -> <%v>", key, common.BytesToInt64(it.Key()[1:]),
    30  			common.BytesToInt64(it.Value())))
    31  	}
    32  
    33  	unmarshalHandler := func(bz []byte, ptr interface{}) {
    34  		k.cdc.MustUnmarshalBinaryBare(bz, ptr)
    35  	}
    36  
    37  	unmarshalJSONHanlder := func(bz []byte, ptr interface{}) {
    38  		k.cdc.MustUnmarshalJSON(bz, ptr)
    39  	}
    40  
    41  	var order types.Order
    42  	dumpKvs(orderStore, types.OrderKey, "OrderKey", &order, unmarshalHandler, dumpStringHandler)
    43  
    44  	var depthBook types.DepthBook
    45  	dumpKvs(orderStore, types.DepthBookKey, "DepthbookKey", &depthBook, unmarshalHandler, dumpStringHandler)
    46  
    47  	var price sdk.Dec
    48  	dumpKvs(orderStore, types.PriceKey, "PriceKey", &price, unmarshalHandler, dumpStringHandler)
    49  
    50  	dumpKvs(orderStore, types.OrderNumPerBlockKey, "OrderNumPerBlockKey", nil, nil, dumpKvIntHandler)
    51  
    52  	dumpKvs(orderStore, types.OrderIDsKey, "OrderIDsKey", &orderIDs, unmarshalJSONHanlder, dumpStringHandler)
    53  
    54  	var expireBlockNumbers []int64
    55  	dumpKvs(orderStore, types.ExpireBlockHeightKey, "ExpireBlockHeightKey", &expireBlockNumbers, unmarshalHandler, dumpIntHandler)
    56  
    57  	dumpKv(orderStore, logger, types.LastExpiredBlockHeightKey, "LastExpiredBlockHeightKey")
    58  	dumpKv(orderStore, logger, types.OpenOrderNumKey, "OpenOrderNumKey")
    59  	dumpKv(orderStore, logger, types.StoreOrderNumKey, "StoreOrderNumKey")
    60  	dumpKvJSON(orderStore, k, logger, types.RecentlyClosedOrderIDsKey, "RecentlyClosedOrderIDsKey", &orderIDs)
    61  }
    62  
    63  func dumpKvs(orderStore sdk.KVStore, k []byte, key string, v interface{},
    64  	unmarshalHandler func([]byte, interface{}),
    65  	dumpHandler func(string, sdk.Iterator, interface{})) {
    66  
    67  	orderIter := sdk.KVStorePrefixIterator(orderStore, k)
    68  
    69  	for ; orderIter.Valid(); orderIter.Next() {
    70  
    71  		if unmarshalHandler != nil {
    72  			unmarshalHandler(orderIter.Value(), v)
    73  		}
    74  
    75  		if dumpHandler != nil {
    76  			dumpHandler(key, orderIter, v)
    77  		}
    78  	}
    79  	orderIter.Close()
    80  }
    81  
    82  func dumpKvJSON(store sdk.KVStore, keeper Keeper, logger log.Logger, k []byte, key string, v interface{}) {
    83  	bz := store.Get(k)
    84  	if bz != nil {
    85  		keeper.cdc.MustUnmarshalJSON(bz, v)
    86  	}
    87  	logger.Error(fmt.Sprintf("%s: -> <%v>", key, v))
    88  }
    89  
    90  func dumpKv(store sdk.KVStore, logger log.Logger, k []byte, key string) {
    91  	bz := store.Get(k)
    92  	var v interface{} = bz
    93  	if bz != nil {
    94  		v = common.BytesToInt64(bz)
    95  	}
    96  	logger.Error(fmt.Sprintf("%s: -> <%v>", key, v))
    97  }