by djherbis

djherbis / stow

Simple object persistence with boltdb

129 Stars 9 Forks Last release: almost 2 years ago (v3.0.0) MIT License 86 Commits 13 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


GoDoc Release Software License Build Status Coverage Status Go Report Card


This package provides a persistence manager for objects backed by bbolt (orig. boltdb).

package main

import ( "encoding/gob" "fmt" "log"

bolt "" "" )

func main() { // Create a boltdb (bbolt fork) database db, err := bolt.Open("my.db", 0600, nil) if err != nil { log.Fatal(err) }

// Open/Create a Json-encoded Store, Xml and Gob are also built-in // We'll store a greeting and person in a boltdb bucket named "people" peopleStore := stow.NewJSONStore(db, []byte("people"))

peopleStore.Put("hello", Person{Name: "Dustin"})

peopleStore.ForEach(func(greeting string, person Person) { fmt.Println(greeting, person.Name) })

// Open/Create a Gob-encoded Store. The Gob encoding keeps type information, // so you can encode/decode interfaces! sayerStore := stow.NewStore(db, []byte("greetings"))

var sayer Sayer = Person{Name: "Dustin"} sayerStore.Put("hello", &sayer)

var retSayer Sayer sayerStore.Get("hello", &retSayer) retSayer.Say("hello")

sayerStore.ForEach(func(sayer Sayer) { sayer.Say("hey") }) }

type Sayer interface { Say(something string) }

type Person struct { Name string }

func (p Person) Say(greeting string) { fmt.Printf("%s says %s.\n", p.Name, greeting) }

func init() { gob.Register(&Person{}) }


go get

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.