Documentation ¶
Index ¶
- Constants
- Variables
- type Bucket
- func (eb *Bucket) Bucket(name []byte) *Bucket
- func (eb *Bucket) CreateBucket(name []byte) (*Bucket, error)
- func (eb *Bucket) CreateBucketIfNotExists(name []byte) (*Bucket, error)
- func (eb *Bucket) Cursor() *Cursor
- func (eb *Bucket) ForEach(fn func(k, v []byte) error) error
- func (eb *Bucket) Get(key []byte) []byte
- func (eb *Bucket) Put(key, value []byte) error
- type Cursor
- type DB
- type Info
- type Options
- type PageInfo
- type Stats
- type Tx
Examples ¶
Constants ¶
View Source
const ( MaxKeySize = bolt.MaxKeySize MaxValueSize = bolt.MaxValueSize DefaultMaxBatchSize = bolt.DefaultMaxBatchSize DefaultMaxBatchDelay = bolt.DefaultMaxBatchDelay DefaultAllocSize = bolt.DefaultAllocSize DefaultFillPercent = bolt.DefaultFillPercent IgnoreNoSync = bolt.IgnoreNoSync )
Variables ¶
View Source
var ( ErrDatabaseNotOpen = bolt.ErrDatabaseNotOpen ErrDatabaseOpen = bolt.ErrDatabaseOpen ErrInvalid = bolt.ErrInvalid ErrVersionMismatch = bolt.ErrVersionMismatch ErrChecksum = bolt.ErrChecksum ErrTimeout = bolt.ErrTimeout ErrTxNotWritable = bolt.ErrTxNotWritable ErrTxClosed = bolt.ErrTxClosed ErrDatabaseReadOnly = bolt.ErrDatabaseReadOnly ErrBucketNotFound = bolt.ErrBucketNotFound ErrBucketExists = bolt.ErrBucketExists ErrBucketNameRequired = bolt.ErrBucketNameRequired ErrKeyRequired = bolt.ErrKeyRequired ErrKeyTooLarge = bolt.ErrKeyTooLarge ErrValueTooLarge = bolt.ErrValueTooLarge ErrIncompatibleValue = bolt.ErrIncompatibleValue ErrDecrypt = errors.New("could not decrypt data") )
Functions ¶
This section is empty.
Types ¶
type Bucket ¶
type Bucket struct {
// contains filtered or unexported fields
}
func (*Bucket) CreateBucketIfNotExists ¶
func (*Bucket) ForEach ¶
Example ¶
// Open the database. db, err := bolt.Open(testKey, tempfile(), 0666, nil) if err != nil { log.Fatal(err) } defer os.Remove(db.Path()) // Insert data into a bucket. if err := db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucket([]byte("animals")) if err != nil { return err } if err := b.Put([]byte("dog"), []byte("fun")); err != nil { return err } if err := b.Put([]byte("cat"), []byte("lame")); err != nil { return err } if err := b.Put([]byte("liger"), []byte("awesome")); err != nil { return err } // Iterate over items in sorted key order. if err := b.ForEach(func(k, v []byte) error { fmt.Printf("A %s is %s.\n", k, v) return nil }); err != nil { return err } return nil }); err != nil { log.Fatal(err) } // Close database to release file lock. if err := db.Close(); err != nil { log.Fatal(err) }
Output: A cat is lame. A dog is fun. A liger is awesome.
func (*Bucket) Put ¶
Example ¶
// Open the database. db, err := bolt.Open(testKey, tempfile(), 0666, nil) if err != nil { log.Fatal(err) } defer os.Remove(db.Path()) // Start a write transaction. if err := db.Update(func(tx *bolt.Tx) error { // Create a bucket. b, err := tx.CreateBucket([]byte("widgets")) if err != nil { return err } // Set the value "bar" for the key "foo". if err := b.Put([]byte("foo"), []byte("bar")); err != nil { return err } return nil }); err != nil { log.Fatal(err) } // Read value back in a different read-only transaction. if err := db.View(func(tx *bolt.Tx) error { value := tx.Bucket([]byte("widgets")).Get([]byte("foo")) fmt.Printf("The value of 'foo' is: %s\n", value) return nil }); err != nil { log.Fatal(err) } // Close database to release file lock. if err := db.Close(); err != nil { log.Fatal(err) }
Output: The value of 'foo' is: bar
type Cursor ¶
Example ¶
// Open the database. db, err := bolt.Open(testKey, tempfile(), 0666, nil) if err != nil { log.Fatal(err) } defer os.Remove(db.Path()) // Start a read-write transaction. if err := db.Update(func(tx *bolt.Tx) error { // Create a new bucket. b, err := tx.CreateBucket([]byte("animals")) if err != nil { return err } // Insert data into a bucket. if err := b.Put([]byte("dog"), []byte("fun")); err != nil { log.Fatal(err) } if err := b.Put([]byte("cat"), []byte("lame")); err != nil { log.Fatal(err) } if err := b.Put([]byte("liger"), []byte("awesome")); err != nil { log.Fatal(err) } // Create a cursor for iteration. c := b.Cursor() // Iterate over items in sorted key order. This starts from the // first key/value pair and updates the k/v variables to the // next key/value on each iteration. // // The loop finishes at the end of the cursor when a nil key is returned. for k, v := c.First(); k != nil; k, v = c.Next() { fmt.Printf("A %s is %s.\n", k, v) } return nil }); err != nil { log.Fatal(err) } if err := db.Close(); err != nil { log.Fatal(err) }
Output: A cat is lame. A dog is fun. A liger is awesome.
Example (Reverse) ¶
// Open the database. db, err := bolt.Open(testKey, tempfile(), 0666, nil) if err != nil { log.Fatal(err) } defer os.Remove(db.Path()) // Start a read-write transaction. if err := db.Update(func(tx *bolt.Tx) error { // Create a new bucket. b, err := tx.CreateBucket([]byte("animals")) if err != nil { return err } // Insert data into a bucket. if err := b.Put([]byte("dog"), []byte("fun")); err != nil { log.Fatal(err) } if err := b.Put([]byte("cat"), []byte("lame")); err != nil { log.Fatal(err) } if err := b.Put([]byte("liger"), []byte("awesome")); err != nil { log.Fatal(err) } // Create a cursor for iteration. c := b.Cursor() // Iterate over items in reverse sorted key order. This starts // from the last key/value pair and updates the k/v variables to // the previous key/value on each iteration. // // The loop finishes at the beginning of the cursor when a nil key // is returned. for k, v := c.Last(); k != nil; k, v = c.Prev() { fmt.Printf("A %s is %s.\n", k, v) } return nil }); err != nil { log.Fatal(err) } // Close the database to release the file lock. if err := db.Close(); err != nil { log.Fatal(err) }
Output: A liger is awesome. A dog is fun. A cat is lame.
type DB ¶
func (*DB) Update ¶
Example ¶
package main import ( "fmt" "io/ioutil" "log" "os" bolt "github.com/iryonetwork/encrypted-bolt" ) var testKey []byte = []byte{0x47, 0x41, 0xf2, 0xd6, 0xa5, 0xa0, 0x46, 0x33, 0x87, 0xa8, 0x2, 0xa2, 0x52, 0xd0, 0x20, 0xed, 0x8c, 0x65, 0x76, 0x50, 0x77, 0x79, 0x4c, 0x7c, 0x76, 0x49, 0xbf, 0x85, 0x18, 0x27, 0x4f, 0xa0} func main() { // Open the database. db, err := bolt.Open(testKey, tempfile(), 0666, nil) if err != nil { log.Fatal(err) } defer os.Remove(db.Path()) // Execute several commands within a read-write transaction. if err := db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucket([]byte("widgets")) if err != nil { return err } if err := b.Put([]byte("foo"), []byte("bar")); err != nil { return err } return nil }); err != nil { log.Fatal(err) } // Read the value back from a separate read-only transaction. if err := db.View(func(tx *bolt.Tx) error { value := tx.Bucket([]byte("widgets")).Get([]byte("foo")) fmt.Printf("The value of 'foo' is: %s\n", value) return nil }); err != nil { log.Fatal(err) } // Close database to release the file lock. if err := db.Close(); err != nil { log.Fatal(err) } } // tempfile returns a temporary file path. func tempfile() string { f, err := ioutil.TempFile("", "bolt-") if err != nil { panic(err) } if err := f.Close(); err != nil { panic(err) } if err := os.Remove(f.Name()); err != nil { panic(err) } return f.Name() }
Output: The value of 'foo' is: bar
func (*DB) View ¶
Example ¶
package main import ( "fmt" "io/ioutil" "log" "os" bolt "github.com/iryonetwork/encrypted-bolt" ) var testKey []byte = []byte{0x47, 0x41, 0xf2, 0xd6, 0xa5, 0xa0, 0x46, 0x33, 0x87, 0xa8, 0x2, 0xa2, 0x52, 0xd0, 0x20, 0xed, 0x8c, 0x65, 0x76, 0x50, 0x77, 0x79, 0x4c, 0x7c, 0x76, 0x49, 0xbf, 0x85, 0x18, 0x27, 0x4f, 0xa0} func main() { // Open the database. db, err := bolt.Open(testKey, tempfile(), 0666, nil) if err != nil { log.Fatal(err) } defer os.Remove(db.Path()) // Insert data into a bucket. if err := db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucket([]byte("people")) if err != nil { return err } if err := b.Put([]byte("john"), []byte("doe")); err != nil { return err } if err := b.Put([]byte("susy"), []byte("que")); err != nil { return err } return nil }); err != nil { log.Fatal(err) } // Access data from within a read-only transactional block. if err := db.View(func(tx *bolt.Tx) error { v := tx.Bucket([]byte("people")).Get([]byte("john")) fmt.Printf("John's last name is %s.\n", v) return nil }); err != nil { log.Fatal(err) } // Close database to release the file lock. if err := db.Close(); err != nil { log.Fatal(err) } } // tempfile returns a temporary file path. func tempfile() string { f, err := ioutil.TempFile("", "bolt-") if err != nil { panic(err) } if err := f.Close(); err != nil { panic(err) } if err := os.Remove(f.Name()); err != nil { panic(err) } return f.Name() }
Output: John's last name is doe.
type Tx ¶
func (*Tx) CreateBucketIfNotExists ¶
Click to show internal directories.
Click to hide internal directories.