package elastic import ( "fmt" "log" "strconv" "github.com/boltdb/bolt" ) func getOffset(db *bolt.DB, index string) (int, error) { offset := 0 if err := db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucketIfNotExists([]byte("position")) if err != nil { return err } v := b.Get([]byte(index)) offset, _ = strconv.Atoi(string(v)) return nil }); err != nil { return offset, err } return offset, nil } func setOffset(db *bolt.DB, index string, offset int) error { // log.Printf("setOffset() index=%s offset=%d", index, offset) if err := db.Update(func(tx *bolt.Tx) error { b := tx.Bucket([]byte("position")) if err := b.Put([]byte(index), []byte(fmt.Sprintf("%d", offset))); err != nil { return err } return nil }); err != nil { log.Fatal(err) } return nil }