arnaucube
arnaucube/go-merkletree-oldPublic Self-hosted repository
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}