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 }