stow

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:

Stow

GoDoc Release Software License Build Status Coverage Status Go Report Card

Usage

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

package main

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

bolt "go.etcd.io/bbolt" "gopkg.in/djherbis/stow.v3" )

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{}) }

Installation

go get gopkg.in/djherbis/stow.v3

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.