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  }