github.com/hairyhenderson/gomplate/v3@v3.11.7/libkv/boltdb.go (about) 1 package libkv 2 3 import ( 4 "net/url" 5 "time" 6 7 "github.com/docker/libkv" 8 "github.com/docker/libkv/store" 9 "github.com/docker/libkv/store/boltdb" 10 "github.com/hairyhenderson/gomplate/v3/conv" 11 "github.com/hairyhenderson/gomplate/v3/env" 12 "github.com/pkg/errors" 13 ) 14 15 // NewBoltDB - initialize a new BoltDB datasource handler 16 // Deprecated: don't use 17 func NewBoltDB(u *url.URL) (*LibKV, error) { 18 boltdb.Register() 19 20 config, err := setupBoltDB(u.Fragment) 21 if err != nil { 22 return nil, err 23 } 24 kv, err := libkv.NewStore(store.BOLTDB, []string{u.Path}, config) 25 if err != nil { 26 return nil, errors.Wrapf(err, "BoltDB store creation failed") 27 } 28 return &LibKV{kv}, nil 29 } 30 31 func setupBoltDB(bucket string) (*store.Config, error) { 32 if bucket == "" { 33 return nil, errors.New("missing bucket - must specify BoltDB bucket in URL fragment") 34 } 35 36 t := conv.MustParseInt(env.Getenv("BOLTDB_TIMEOUT"), 10, 16) 37 return &store.Config{ 38 Bucket: bucket, 39 ConnectionTimeout: time.Duration(t) * time.Second, 40 PersistConnection: conv.Bool(env.Getenv("BOLTDB_PERSIST")), 41 }, nil 42 }