package wtdb import ( "encoding/binary" "errors" "github.com/lightningnetwork/lnd/kvdb" ) var ( // metadataBkt stores all the meta information concerning the state of // the database. metadataBkt = []byte("metadata-bucket") // dbVersionKey is a static key used to retrieve the database version // number from the metadataBkt. dbVersionKey = []byte("version") // ErrUninitializedDB signals that top-level buckets for the database // have not been initialized. ErrUninitializedDB = errors.New("db not initialized") // ErrNoDBVersion signals that the database contains no version info. ErrNoDBVersion = errors.New("db has no version") // byteOrder is the default endianness used when serializing integers. byteOrder = binary.BigEndian ) // isFirstInit returns true if the given database has not yet been initialized, // e.g. no metadata bucket is present yet. func isFirstInit(db kvdb.Backend) (bool, error) { var metadataExists bool err := kvdb.View(db, func(tx kvdb.RTx) error { metadataExists = tx.ReadBucket(metadataBkt) != nil return nil }, func() { metadataExists = false }) if err != nil { return false, err } return !metadataExists, nil }