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