/
levelDB.go
89 lines (74 loc) · 1.65 KB
/
levelDB.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
83
84
85
86
87
88
89
package ldb
import (
b "technopark/blockloadTest/src/block"
"github.com/syndtr/goleveldb/leveldb"
"github.com/vmihailenco/msgpack"
)
// DeleteLevelDBIter - удаление
func DeleteLevelDBIter(db *leveldb.DB, n uint, pow uint) {
var index uint
for index = n * pow; index < n*(pow+1); index++ {
indexByte, err := msgpack.Marshal(&index)
if err != nil {
panic(err)
}
err = db.Delete([]byte(indexByte), nil)
if err != nil {
// fmt.Println(err)
panic(err)
}
}
}
// FillLevelDBIter - итеративное заполнение
func FillLevelDBIter(db *leveldb.DB, n uint, pow uint) {
var index uint
for index = n * pow; index < n*(pow+1); index++ {
var block = b.Block{
ID: index,
DocumentID: 0,
Data: "l",
Line: 0,
Column: index,
}
blBite, err := msgpack.Marshal(&block)
if err != nil {
panic(err)
}
indexByte, err := msgpack.Marshal(&index)
if err != nil {
panic(err)
}
err = db.Put([]byte(indexByte), blBite, nil)
if err != nil {
// fmt.Println(err)
panic(err)
}
}
}
// FillLevelDBBatch - заполнение пачкой
func FillLevelDBBatch(db *leveldb.DB, n uint, pow uint) {
batch := new(leveldb.Batch)
var index uint
for index = n * pow; index < n*(pow+1); index++ {
var block = b.Block{
ID: index,
DocumentID: 0,
Data: "l",
Line: 0,
Column: index,
}
blBite, err := msgpack.Marshal(&block)
if err != nil {
panic(err)
}
indexByte, err := msgpack.Marshal(&index)
if err != nil {
panic(err)
}
batch.Put([]byte(indexByte), blBite)
}
err := db.Write(batch, nil)
if err != nil {
panic(err)
}
}