Skip to content

Commit f3f053c

Browse files
committed
Fixed work of all handlers
1 parent 523cf5f commit f3f053c

File tree

3 files changed

+435
-154
lines changed

3 files changed

+435
-154
lines changed

boltgui.go

Lines changed: 69 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
)
1515

1616
const (
17-
delimiter = ">|_|<"
17+
delimiter = "--"
1818
)
1919

2020
var (
@@ -29,8 +29,9 @@ func main() {
2929
flag.Parse()
3030

3131
if *dbpath == "path-to-db" {
32-
fmt.Print("Enter path to db:\n>")
33-
fmt.Scanf("%v", dbpath)
32+
fmt.Print("Parameter -path must be set")
33+
flag.Usage()
34+
return
3435
}
3536

3637
http.HandleFunc("/exit", exit)
@@ -41,8 +42,8 @@ func main() {
4142
http.HandleFunc("/setEntry", setEntryHandler)
4243
http.HandleFunc("/setBucket", setBucketHandler)
4344

44-
//http.Handle("/", http.FileServer(Dir(false, "/html")))
45-
http.Handle("/", http.FileServer(http.Dir("html")))
45+
http.Handle("/", http.FileServer(Dir(false, "/html")))
46+
4647
http.ListenAndServe(":"+*port, nil)
4748
}
4849

@@ -101,7 +102,11 @@ func delEntry(bucket, key string) {
101102
defer db.Close()
102103

103104
err := db.Update(func(tx *bolt.Tx) error {
104-
buck := tx.Bucket([]byte(bucket))
105+
buck, err := getBucketByFullName(bucket, tx)
106+
if err != nil {
107+
return err
108+
}
109+
105110
return buck.Delete([]byte(key))
106111
})
107112

@@ -110,12 +115,43 @@ func delEntry(bucket, key string) {
110115
}
111116
}
112117

113-
func delBucket(bucket string) {
118+
func delBucket(fullName string) {
114119
db := getDb()
115120
defer db.Close()
116121

117122
err := db.Update(func(tx *bolt.Tx) error {
118-
return tx.DeleteBucket([]byte(bucket))
123+
fullName = strings.TrimPrefix(fullName, "list--")
124+
bucketChain := strings.Split(fullName, delimiter)
125+
126+
if len(bucketChain) < 1 {
127+
return errors.New("empty bucket list")
128+
}
129+
130+
var (
131+
buck = &bolt.Bucket{}
132+
deletingKey string
133+
)
134+
135+
if len(bucketChain) == 1 {
136+
return tx.DeleteBucket([]byte(bucketChain[0]))
137+
}
138+
139+
for i, bucketName := range bucketChain {
140+
switch {
141+
case i == 0: //first level bucket get from tx
142+
buck = tx.Bucket([]byte(bucketName))
143+
case i == len(bucketChain)-1: // save name of last bucket in chain and parent it's parent bucket
144+
deletingKey = bucketName
145+
default:
146+
if buck == nil {
147+
return errors.New("Bucket not found.")
148+
}
149+
buck = buck.Bucket([]byte(bucketName))
150+
}
151+
152+
}
153+
154+
return buck.DeleteBucket([]byte(deletingKey))
119155
})
120156

121157
if err != nil {
@@ -128,19 +164,9 @@ func setEntry(bucket, key, value string) {
128164
defer db.Close()
129165

130166
err := db.Update(func(tx *bolt.Tx) error {
131-
bucketChain := strings.Split(bucket, delimiter)
132-
if len(bucketChain) < 1 {
133-
return errors.New("empty bucket list")
134-
}
135-
136-
buck := &bolt.Bucket{}
137-
138-
for i, bucketName := range bucketChain {
139-
if i == 0 { //first level bucket get from tx
140-
buck = tx.Bucket([]byte(bucketName))
141-
} else { //else serch for subbucket
142-
buck = buck.Bucket([]byte(bucketName))
143-
}
167+
buck, err := getBucketByFullName(bucket, tx)
168+
if err != nil {
169+
return err
144170
}
145171

146172
return buck.Put([]byte(key), []byte(value))
@@ -259,3 +285,25 @@ func (b *Bucket) fill(bucket *bolt.Bucket) {
259285
return nil
260286
})
261287
}
288+
289+
func getBucketByFullName(fullName string, tx *bolt.Tx) (*bolt.Bucket, error) {
290+
fullName = strings.TrimPrefix(fullName, "list--")
291+
bucketChain := strings.Split(fullName, delimiter)
292+
if len(bucketChain) < 1 {
293+
return nil, errors.New("empty bucket list")
294+
}
295+
296+
buck := &bolt.Bucket{}
297+
298+
for i, bucketName := range bucketChain {
299+
if i == 0 { //first level bucket get from tx
300+
buck = tx.Bucket([]byte(bucketName))
301+
} else { //else serch for subbucket
302+
if buck == nil {
303+
return nil, errors.New("Bucket not found.")
304+
}
305+
buck = buck.Bucket([]byte(bucketName))
306+
}
307+
}
308+
return buck, nil
309+
}

html.go

Lines changed: 138 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type _escDir struct {
2828
type _escFile struct {
2929
compressed string
3030
size int64
31+
modtime int64
3132
local string
3233
isDir bool
3334

@@ -117,7 +118,7 @@ func (f *_escFile) Mode() os.FileMode {
117118
}
118119

119120
func (f *_escFile) ModTime() time.Time {
120-
return time.Time{}
121+
return time.Unix(f.modtime, 0)
121122
}
122123

123124
func (f *_escFile) IsDir() bool {
@@ -186,8 +187,9 @@ func FSMustString(useLocal bool, name string) string {
186187
var _escData = map[string]*_escFile{
187188

188189
"/html/css/main.css": {
189-
local: "html/css/main.css",
190-
size: 250,
190+
local: "html/css/main.css",
191+
size: 250,
192+
modtime: 1438699833,
191193
compressed: `
192194
H4sIAAAJbogA/2yOTU7EMAyF1+QU1khsRpoZURUByVXYpI0hlqykcqz+irsTWpbd+vP73rv3kkuxHX5l
193195
QYAN+pwUk1q4fDZvL+8XVy+cxYJgcPBjjIktbOYpUBnYLxYoMSV0pqJ7QL7VsCx/HxMFjRaa12HeqeKs
@@ -197,59 +199,149 @@ XtDXEgNQfYVWtCOKUu/ZPa4TMcMgOFbFgSl9Q8xCax3lmZfrY4/+m9uP56O203TDmfR8VmxO778BAAD/
197199
},
198200

199201
"/html/index.html": {
200-
local: "html/index.html",
201-
size: 3444,
202+
local: "html/index.html",
203+
size: 2408,
204+
modtime: 1445516845,
202205
compressed: `
203-
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
220+
AAA=
221221
`,
222222
},
223223

224224
"/html/js/boltguiapp.js": {
225-
local: "html/js/boltguiapp.js",
226-
size: 4612,
225+
local: "html/js/boltguiapp.js",
226+
size: 11322,
227+
modtime: 1445514930,
227228
compressed: `
228-
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
266+
AAA=
267+
`,
268+
},
269+
270+
"/html/js/messagepack.js": {
271+
local: "html/js/messagepack.js",
272+
size: 15236,
273+
modtime: 1445516750,
274+
compressed: `
275+
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
319+
iXIT9oQ7AAA=
320+
`,
321+
},
322+
323+
"/html/js/recursiongelper.js": {
324+
local: "html/js/recursiongelper.js",
325+
size: 1301,
326+
modtime: 1440592739,
327+
compressed: `
328+
H4sIAAAJbogA/2xUW2/aMBR+Dr/iTJraBNHwTjWtXaVpk8Yeqr1VPLjJgbg4dmQ7dKziv+/4Ci1IVerb
329+
+W7HZj6FCUzhXtLfZhRMg0G94w3Ca8ebDjoUg4FXbjtoNDLL5QY0NqM2fIfQchpbGpnaodyx0XZKw5Lp
330+
LfxiG5Qtf9n6HUGQ0iAsf/6h+XzCAlvdq3YUWF4/BkwlfxAh6usZPK2qes0aq/T+4vb150b1AxdIk/Uo
331+
SYaSZVqr3iaFRjtqCTQq5tMpfUnHksmRCbGHeM6A7RBQYI/SEg7/6wy6NZ0YQSg11KH8bmCa9en8u7Un
332+
weV2BfcwKGNv3CSrmgFlwiSo5xdKK4SZFZuKqDbcWNTYwo4zGDTS6dYD0USRX8tdwoEu2DKuZRGwUdIy
333+
LpNyx+3GiSJWzukbXS+O9Nm6q3KpUVhz+K10zwT/hxkQvEskle4IX5epgdx8T1geImAUvuYLvHkXiwBx
334+
uHVbh0kk+Ub3aXsha3je00qvdsmQ80cajavb0Q1Nc8KP8uu0VFa1L8Wyuj0e96bbh3jGb5xcjqKgxBfg
335+
5cPVldda01IFX/MYFiBHIWb+eLhNvhsP6Rq5hmm8YW1rzjTH8InHZ3FsfUO9nSUPMTiXTEQ9B3LBf/ro
336+
JxUWHzcon/QeygQTYnFdSGSPXnXkCgDHhK06fSCTizTJR/bVCCUxq0otYsNAvwdxM6mgwdE1PUzPll/Q
337+
6S2eAV9Tyvucw/t2UUlmzCuOU+xL3zlgejP25xH4r7+ZNKL/h1V1+z8AAP//x8qQ6BUFAAA=
247338
`,
248339
},
249340

250341
"/html/js/ui-bootstrap-tpls-0.13.2.min.js": {
251-
local: "html/js/ui-bootstrap-tpls-0.13.2.min.js",
252-
size: 82316,
342+
local: "html/js/ui-bootstrap-tpls-0.13.2.min.js",
343+
size: 82316,
344+
modtime: 1438674457,
253345
compressed: `
254346
H4sIAAAJbogA/+z963obx7EoDP9OrmI4H0POGAMQoOTYHmiIyDpYSizL21KWv2yQ8TMnAEMCGAgDSKIJ
255347
XNF7Ce+/fWVvVfV5pgGSkpK9136yViwO+ljdXV1dVV1ddfLVH52vnHg+Xk/jZXtdtJOyXFWrZbzA9Mlq

0 commit comments

Comments
 (0)