41 lines
813 B
Go
41 lines
813 B
Go
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
|
|
}
|