github.com/decred/dcrlnd@v0.7.6/channeldb/migration_01_to_11/meta.go (about)

     1  package migration_01_to_11
     2  
     3  import (
     4  	"github.com/decred/dcrlnd/kvdb"
     5  )
     6  
     7  var (
     8  	// metaBucket stores all the meta information concerning the state of
     9  	// the database.
    10  	metaBucket = []byte("metadata")
    11  
    12  	// dbVersionKey is a bboltdb key and it's used for storing/retrieving
    13  	// current database version.
    14  	dbVersionKey = []byte("dbp")
    15  )
    16  
    17  // Meta structure holds the database meta information.
    18  type Meta struct {
    19  	// DbVersionNumber is the current schema version of the database.
    20  	DbVersionNumber uint32
    21  }
    22  
    23  // putMeta is an internal helper function used in order to allow callers to
    24  // re-use a database transaction. See the publicly exported PutMeta method for
    25  // more information.
    26  func putMeta(meta *Meta, tx kvdb.RwTx) error {
    27  	metaBucket, err := tx.CreateTopLevelBucket(metaBucket)
    28  	if err != nil {
    29  		return err
    30  	}
    31  
    32  	return putDbVersion(metaBucket, meta)
    33  }
    34  
    35  func putDbVersion(metaBucket kvdb.RwBucket, meta *Meta) error {
    36  	scratch := make([]byte, 4)
    37  	byteOrder.PutUint32(scratch, meta.DbVersionNumber)
    38  	return metaBucket.Put(dbVersionKey, scratch)
    39  }