go-merkletree-old/db.go
db.goRaw
1package merkletree
2
3import (
4 "bytes"
5
6 "github.com/fatih/color"
7 common3 "github.com/iden3/go-iden3/common"
8)
9
10func (mt *MerkleTree) Insert(key Hash, nodeType byte, indexLength uint32, nodeBytes []byte) error {
11 // add nodetype at the first byte of the value
12 var value []byte
13 value = append(value, nodeType)
14 indexLengthBytes := common3.Uint32ToBytes(indexLength)
15 value = append(value, indexLengthBytes[:]...)
16 value = append(value, nodeBytes[:]...)
17
18 err := mt.storage.Put(key[:], value, nil)
19 if err != nil {
20 color.Red(err.Error())
21 return err
22 }
23 return nil
24}
25
26func (mt *MerkleTree) Get(key Hash) (byte, uint32, []byte, error) {
27 if bytes.Equal(key[:], EmptyNodeValue[:]) {
28 return 0, 0, EmptyNodeValue[:], nil
29 }
30
31 value, err := mt.storage.Get(key[:], nil)
32 if err != nil {
33 return 0, 0, EmptyNodeValue[:], err
34 }
35
36 // get nodetype of the first byte of the value
37 nodeType := value[0]
38 indexLength := common3.BytesToUint32(value[1:5])
39 nodeBytes := value[5:]
40 return nodeType, indexLength, nodeBytes, err
41}