eth-tracker/db/db.go

49 lines
736 B
Go

package db
import (
"log/slog"
"github.com/bits-and-blooms/bitset"
)
type (
DB interface {
Close() error
GetLowerBound() (uint64, error)
SetLowerBound(v uint64) error
SetUpperBound(uint64) error
GetUpperBound() (uint64, error)
SetValue(uint64) error
GetMissingValuesBitSet(uint64, uint64) (*bitset.BitSet, error)
Cleanup() error
}
DBOpts struct {
Logg *slog.Logger
DBType string
}
)
func New(o DBOpts) (DB, error) {
var (
err error
db DB
)
switch o.DBType {
case "bolt":
db, err = NewBoltDB()
if err != nil {
return nil, err
}
default:
db, err = NewBoltDB()
if err != nil {
return nil, err
}
o.Logg.Warn("invalid db type, using default type (bolt)")
}
return db, nil
}