commit 382c3959008c5ef3321a9aea7a41f7aac2527c29 Author: Stephen McQuay (smcquay) Date: Wed Jul 27 22:27:25 2016 -0700 init diff --git a/main.go b/main.go new file mode 100644 index 0000000..36e8795 --- /dev/null +++ b/main.go @@ -0,0 +1,72 @@ +package main + +import ( + "bufio" + "fmt" + "log" + "os" + + "github.com/boltdb/bolt" +) + +const usage = "bdb <(w)rite|(r)ead> " + +func main() { + log.SetFlags(log.Lshortfile) + if len(os.Args) != 3 { + fmt.Fprintf(os.Stderr, "%s\n", usage) + os.Exit(1) + } + + switch os.Args[1] { + case "write", "read", "w", "r": + default: + fmt.Fprintf(os.Stderr, "%s\n", usage) + os.Exit(1) + } + + db, err := bolt.Open(os.Args[2], 0600, nil) + if err != nil { + panic(err) + } + defer db.Close() + err = db.Update(func(tx *bolt.Tx) error { + _, err := tx.CreateBucketIfNotExists([]byte("queue")) + if err != nil { + return err + } + return nil + }) + if err != nil { + panic(err) + } + + switch os.Args[1] { + case "write", "w": + err := db.Update(func(tx *bolt.Tx) error { + s := bufio.NewScanner(os.Stdin) + b := tx.Bucket([]byte("queue")) + for s.Scan() { + err := b.Put(s.Bytes(), s.Bytes()) + if err != nil { + return err + } + } + return s.Err() + }) + if err != nil { + panic(err) + } + case "read", "r": + db.View(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte("queue")) + c := b.Cursor() + + for k, v := c.First(); k != nil; k, v = c.Next() { + fmt.Printf("key=%s, value=%s\n", k, v) + } + + return nil + }) + } +}