Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "bytes"
- "encoding/gob"
- "fmt"
- "github.com/boltdb/bolt"
- )
- // Person is a type
- // whose objects are
- // to be saved in the
- // database.
- type Person struct {
- Name string
- Surname string
- Age int
- }
- func main() {
- // Open the database.
- db, err := bolt.Open("people.db", 0666, nil)
- handleError(err)
- // Create a new data
- // structure to store in the
- // database.
- person := &Person{
- Name: "John",
- Surname: "Doe",
- Age: 38,
- }
- // Put the structure in the collection.
- err = db.Update(func(tx *bolt.Tx) error {
- buck, err := tx.CreateBucket([]byte("people"))
- if err != nil {
- return err
- }
- buffer := bytes.NewBuffer([]byte{})
- encoder := gob.NewEncoder(buffer)
- err = encoder.Encode(person)
- if err != nil {
- return err
- }
- data := buffer.Bytes()
- err = buck.Put([]byte("lol"), data)
- return err
- })
- handleError(err)
- // Extract data from the database.
- restored := new(Person)
- err = db.View(func(tx *bolt.Tx) error {
- buck := tx.Bucket([]byte("people"))
- if buck == nil {
- return fmt.Errorf("no bucket called \"people\"")
- }
- data := buck.Get([]byte("lol"))
- if data == nil {
- return fmt.Errorf("no key \"lol\"")
- }
- buffer := bytes.NewBuffer(data)
- decoder := gob.NewDecoder(buffer)
- err := decoder.Decode(restored)
- return err
- })
- fmt.Println("Extracted data:", restored)
- }
- func handleError(err error) {
- if err != nil {
- panic(err)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement