/
keys.go
64 lines (53 loc) · 1.74 KB
/
keys.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
59
60
61
62
63
64
package v2
import sdk "github.com/cosmos/cosmos-sdk/types"
var (
PrefixNFT = []byte{0x01}
PrefixOwners = []byte{0x02} // key for a owner
PrefixCollection = []byte{0x03} // key for balance of NFTs held by the denom
PrefixDenom = []byte{0x04} // key for denom of the nft
PrefixDenomName = []byte{0x05} // key for denom name of the nft
delimiter = []byte("/")
)
// KeyDenom gets the storeKey by the denom id
func KeyDenom(id string) []byte {
key := append(PrefixDenom, delimiter...)
return append(key, []byte(id)...)
}
// KeyDenomName gets the storeKey by the denom name
func KeyDenomName(name string) []byte {
key := append(PrefixDenomName, delimiter...)
return append(key, []byte(name)...)
}
// KeyNFT gets the key of nft stored by an denom and id
func KeyNFT(denomID, tokenID string) []byte {
key := append(PrefixNFT, delimiter...)
if len(denomID) > 0 {
key = append(key, []byte(denomID)...)
key = append(key, delimiter...)
}
if len(denomID) > 0 && len(tokenID) > 0 {
key = append(key, []byte(tokenID)...)
}
return key
}
// KeyCollection gets the storeKey by the collection
func KeyCollection(denomID string) []byte {
key := append(PrefixCollection, delimiter...)
return append(key, []byte(denomID)...)
}
// KeyOwner gets the key of a collection owned by an account address
func KeyOwner(address sdk.AccAddress, denomID, tokenID string) []byte {
key := append(PrefixOwners, delimiter...)
if address != nil {
key = append(key, []byte(address.String())...)
key = append(key, delimiter...)
}
if address != nil && len(denomID) > 0 {
key = append(key, []byte(denomID)...)
key = append(key, delimiter...)
}
if address != nil && len(denomID) > 0 && len(tokenID) > 0 {
key = append(key, []byte(tokenID)...)
}
return key
}