/
decoder.go
56 lines (46 loc) · 1.68 KB
/
decoder.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package simulation
import (
"bytes"
"fmt"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/types/kv"
"github.com/cosmosquad-labs/squad/v3/x/liquidity/types"
)
func NewDecodeStore(cdc codec.Codec) func(kvA, kvB kv.Pair) string {
return func(kvA, kvB kv.Pair) string {
switch {
case bytes.Equal(kvA.Key[:1], types.PairKeyPrefix):
var pairA, pairB types.Pair
cdc.MustUnmarshal(kvA.Value, &pairA)
cdc.MustUnmarshal(kvB.Value, &pairB)
return fmt.Sprintf("%v\n%v", pairA, pairB)
case bytes.Equal(kvA.Key[:1], types.PoolKeyPrefix):
var poolA, poolB types.Pool
cdc.MustUnmarshal(kvA.Value, &poolA)
cdc.MustUnmarshal(kvB.Value, &poolB)
return fmt.Sprintf("%v\n%v", poolA, poolB)
case bytes.Equal(kvA.Key[:1], types.DepositRequestKeyPrefix):
var reqA, reqB types.DepositRequest
cdc.MustUnmarshal(kvA.Value, &reqA)
cdc.MustUnmarshal(kvB.Value, &reqB)
return fmt.Sprintf("%v\n%v", reqA, reqB)
case bytes.Equal(kvA.Key[:1], types.WithdrawRequestKeyPrefix):
var reqA, reqB types.WithdrawRequest
cdc.MustUnmarshal(kvA.Value, &reqA)
cdc.MustUnmarshal(kvB.Value, &reqB)
return fmt.Sprintf("%v\n%v", reqA, reqB)
case bytes.Equal(kvA.Key[:1], types.OrderKeyPrefix):
var reqA, reqB types.Order
cdc.MustUnmarshal(kvA.Value, &reqA)
cdc.MustUnmarshal(kvB.Value, &reqB)
return fmt.Sprintf("%v\n%v", reqA, reqB)
case bytes.Equal(kvA.Key[:1], types.MMOrderIndexKeyPrefix):
var indexA, indexB types.MMOrderIndex
cdc.MustUnmarshal(kvA.Value, &indexA)
cdc.MustUnmarshal(kvB.Value, &indexB)
return fmt.Sprintf("%v\n%v", indexA, indexB)
default:
panic(fmt.Sprintf("invalid liquidity key prefix %X", kvA.Key[:1]))
}
}
}