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 }