diff options
author | Steven Normore <snormore@gmail.com> | 2014-04-11 13:55:14 +0000 |
---|---|---|
committer | Ben Johnson <benbjohnson@yahoo.com> | 2014-04-18 21:44:27 -0500 |
commit | fdde1bcb0624ce5232bf0f3226a2f47fd5a24cb3 (patch) | |
tree | b2c9af8e1ed0076c8e0536dcc2f9a53aa811a5e0 /cmd/bolt/keys.go | |
parent | initial bench and generate command structure (diff) | |
download | dedo-fdde1bcb0624ce5232bf0f3226a2f47fd5a24cb3.tar.gz dedo-fdde1bcb0624ce5232bf0f3226a2f47fd5a24cb3.tar.xz |
moar bench package
Diffstat (limited to 'cmd/bolt/keys.go')
-rw-r--r-- | cmd/bolt/keys.go | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/cmd/bolt/keys.go b/cmd/bolt/keys.go index 6affefe..65b717f 100644 --- a/cmd/bolt/keys.go +++ b/cmd/bolt/keys.go @@ -1,6 +1,8 @@ package main import ( + "errors" + "fmt" "os" "github.com/boltdb/bolt" @@ -8,34 +10,44 @@ import ( // Keys retrieves a list of keys for a given bucket. func Keys(path, name string) { - if _, err := os.Stat(path); os.IsNotExist(err) { + keys, err := keys(path, name) + + if err != nil { fatal(err) return } + for _, key := range keys { + println(key) + } +} + +func keys(path, name string) ([]string, error) { + if _, err := os.Stat(path); os.IsNotExist(err) { + return nil, err + } + db, err := bolt.Open(path, 0600) if err != nil { - fatal(err) - return + return nil, err } defer db.Close() + keys := []string{} + err = db.View(func(tx *bolt.Tx) error { // Find bucket. b := tx.Bucket([]byte(name)) if b == nil { - fatalf("bucket not found: %s", name) - return nil + return errors.New(fmt.Sprintf("bucket %+v not found", b)) } // Iterate over each key. return b.ForEach(func(key, _ []byte) error { - println(string(key)) + keys = append(keys, string(key)) return nil }) }) - if err != nil { - fatal(err) - return - } + + return keys, err } |