-
Notifications
You must be signed in to change notification settings - Fork 0
/
fakedb.go
82 lines (66 loc) · 1.4 KB
/
fakedb.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package consensus
import (
"errors"
"github.com/dece-cash/go-dece/decedb"
)
type FakeTri struct {
m map[string][]byte
}
func NewFakeTri() (ret FakeTri) {
ret.m = make(map[string][]byte)
return
}
func (self *FakeTri) Get(key []byte) ([]byte, error) {
return self.TryGet(key)
}
func (self *FakeTri) Has(key []byte) (bool, error) {
if _, ok := self.m[string(key)]; !ok {
return false, nil
} else {
return true, nil
}
}
func (self *FakeTri) TryGet(key []byte) ([]byte, error) {
if v, ok := self.m[string(key)]; !ok {
return nil, errors.New("can not find value")
} else {
return v, nil
}
}
func (self *FakeTri) Put(key, value []byte) error {
return self.TryUpdate(key, value)
}
func (self *FakeTri) TryUpdate(key, value []byte) error {
str := string(key)
self.m[str] = append([]byte{}, value...)
return nil
}
func (self *FakeTri) Delete(key []byte) error {
return self.TryDelete(key)
}
func (self *FakeTri) TryDelete(key []byte) error {
if _, ok := self.m[string(key)]; ok {
delete(self.m, string(key))
return nil
} else {
return errors.New("delete a empty item")
}
}
type FakeDB struct {
tri FakeTri
db FakeTri
}
func NewFakeDB() (ret FakeDB) {
ret.tri = NewFakeTri()
ret.db = NewFakeTri()
return
}
func (self *FakeDB) Num() uint64 {
return 0
}
func (self *FakeDB) CurrentTri() decedb.Tri {
return &self.tri
}
func (self *FakeDB) GlobalGetter() decedb.Getter {
return &self.db
}