Skip to content

hooksie1/bclient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bbolt Client

Overview

I use bbolt in a few of my projects and repeating the same boilerplate to interact with the database gets tedious. This is an attempt to make it a little less verbose to interact with bbolt.

Usage

Create a New Client/DB

package 
import (
  bc "github.com/hooksie1/bclient"
)
func main() {
 client := bc.NewClient()
 client.NewDB("mydb.db")
}

Create a Bucket

bucket := bc.NewBucket("test")
client.Write(bucket)

Create a Nested Bucket

bucket := bc.NewBucket("test")
nested := bc.NewBucket("nested")
bucket.SetNestedBucket(nested)

Create a New KV

bucket := bc.NewBucket("test")
kv := bc.NewKV().SetBucket(bucket).
	SetKey("testkey").SetValue("testvalue")
client.Write(kv)

Read KV

Reading a KV sets the value in the KV passed to read.

bucket := bc.NewBucket("test")
kv := bc.NewKV().SetBucket(bucket).
	SetKey("testkey")
client.Read(kv)
fmt.Println(kv.Value)

Write a Slice of KVs

bucket := bc.NewBucket("test")
kv1 := bc.NewKV().SetBucket(bucket).
	SetKey("test").SetValue("test")
kv2 := bc.NewKV().SetBucket(bucket).
	SetKey("somekey").SetValue("somevalue")

kvs := bc.KVs {
	kv1,
	kv2,
}

client.Write(kvs)

Read All KVs from a Bucket

Returns a slice of KVs from the specified bucket.

bucket := bc.NewBucket("testing")
kvs, err := client.ReadAll(bucket)
if err != nil {
	log.Println(err)
}

for _, v := range kvs {
	fmt.Printf("bucket: %s, key: %s, value: %s", v.Bucket, v.Key, v.Value)
}

Delete a Bucket/KV/KVs

Use the same process for each type.

bucket := bc.Newbucket("test")
client.Delete(bucket)

More Advanced Usage

Since the client just embeds a *bbolt.DB you can access the View and Update methods directly.

package
import (
	bc "gitlab.com/hooksie1/bclient"
)
func main() {
	client := bc.NewClient()
	client.NewDB("mydb.db")
	client.DB.View()
}   

About

Simple BoltDB client

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages