/
decoder.go
58 lines (46 loc) · 2.38 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
57
58
package simulation
import (
"bytes"
"fmt"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/types/kv"
protobuftypes "github.com/gogo/protobuf/types"
"github.com/sentinel-official/hub/x/subscription/types"
)
func NewStoreDecoder(cdc codec.Marshaler) func(kvA, kvB kv.Pair) string {
return func(kvA, kvB kv.Pair) string {
switch {
case bytes.Equal(kvA.Key[:1], types.CountKey):
var countA, countB protobuftypes.UInt64Value
cdc.MustUnmarshalBinaryBare(kvA.Value, &countA)
cdc.MustUnmarshalBinaryBare(kvB.Value, &countB)
return fmt.Sprintf("%v\n%v", &countA, &countB)
case bytes.Equal(kvA.Key[:1], types.SubscriptionKeyPrefix):
var subscriptionA, subscriptionB types.Subscription
cdc.MustUnmarshalBinaryBare(kvA.Value, &subscriptionA)
cdc.MustUnmarshalBinaryBare(kvB.Value, &subscriptionB)
return fmt.Sprintf("%v\n%v", &subscriptionA, &subscriptionB)
case bytes.Equal(kvA.Key[:1], types.ActiveSubscriptionForAddressKeyPrefix):
var activeSubscriptionForAddressA, activeSubscriptionForAddressB protobuftypes.BoolValue
cdc.MustUnmarshalBinaryBare(kvA.Value, &activeSubscriptionForAddressA)
cdc.MustUnmarshalBinaryBare(kvB.Value, &activeSubscriptionForAddressB)
return fmt.Sprintf("%v\n%v", &activeSubscriptionForAddressA, &activeSubscriptionForAddressB)
case bytes.Equal(kvA.Key[:1], types.InactiveSubscriptionForAddressKeyPrefix):
var inactiveSubscriptionForAddressA, inactiveSubscriptionForAddressB protobuftypes.BoolValue
cdc.MustUnmarshalBinaryBare(kvA.Value, &inactiveSubscriptionForAddressA)
cdc.MustUnmarshalBinaryBare(kvB.Value, &inactiveSubscriptionForAddressB)
return fmt.Sprintf("%v\n%v", &inactiveSubscriptionForAddressA, &inactiveSubscriptionForAddressB)
case bytes.Equal(kvA.Key[:1], types.InactiveSubscriptionAtKeyPrefix):
var inactiveSubscriptionAtA, inactiveSubscriptionAtB protobuftypes.BoolValue
cdc.MustUnmarshalBinaryBare(kvA.Value, &inactiveSubscriptionAtA)
cdc.MustUnmarshalBinaryBare(kvB.Value, &inactiveSubscriptionAtB)
return fmt.Sprintf("%v\n%v", &inactiveSubscriptionAtA, &inactiveSubscriptionAtB)
case bytes.Equal(kvA.Key[:1], types.QuotaKeyPrefix):
var quotaA, quotaB types.Quota
cdc.MustUnmarshalBinaryBare(kvA.Value, "aA)
cdc.MustUnmarshalBinaryBare(kvB.Value, "aB)
return fmt.Sprintf("%v\n%v", "aA, "aB)
}
panic(fmt.Sprintf("invalid key prefix %X", kvA.Key[:1]))
}
}