-
Notifications
You must be signed in to change notification settings - Fork 107
/
init.go
55 lines (42 loc) · 1.37 KB
/
init.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Package db implements several Tendermint DB backends.
package db
import (
"fmt"
"strings"
flag "github.com/spf13/pflag"
"github.com/spf13/viper"
"github.com/tendermint/tendermint/node"
dbm "github.com/tendermint/tm-db"
"github.com/oasisprotocol/oasis-core/go/consensus/tendermint/db/badger"
)
const cfgBackend = "tendermint.db.backend"
// Flags has the configuration flags.
var Flags = flag.NewFlagSet("", flag.ContinueOnError)
// GetBackendName returns the currently configured Tendermint database backend.
func GetBackendName() string {
return viper.GetString(cfgBackend)
}
// GetProvider returns the currently configured Tendermint DBProvider.
func GetProvider() (node.DBProvider, error) {
backend := viper.GetString(cfgBackend)
switch strings.ToLower(backend) {
case badger.BackendName:
return badger.DBProvider, nil
default:
return nil, fmt.Errorf("tendermint/db: unsupported backend: '%v'", backend)
}
}
// New constructs a new tendermint DB with the configured backend.
func New(fn string, noSuffix bool) (dbm.DB, error) {
backend := viper.GetString(cfgBackend)
switch strings.ToLower(backend) {
case badger.BackendName:
return badger.New(fn, noSuffix)
default:
return nil, fmt.Errorf("tendermint/db: unsupported backend: '%v'", backend)
}
}
func init() {
Flags.String(cfgBackend, badger.BackendName, "tendermint db backend")
_ = viper.BindPFlags(Flags)
}