frostfs-node/pkg/local_object_storage/kvio/bbolt/tx.go
Alejandro Lopez 00c8712dc6 [#421] Create common interface for kv repositories
Signed-off-by: Alejandro Lopez <a.lopez@yadro.com>
2023-06-20 12:54:53 +03:00

21 lines
662 B
Go

package bbolt
import (
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/kvio"
"go.etcd.io/bbolt"
)
type txImpl struct {
b *bbolt.Bucket
tx *bbolt.Tx
}
func (tx txImpl) Read(k kvio.Key, f func(kvio.Value) error) error { return f(tx.b.Get(k)) }
func (tx txImpl) Write(k kvio.Key, v kvio.Value) error { return tx.b.Put(k, v) }
func (tx txImpl) Delete(k kvio.Key) error { return tx.b.Delete(k) }
func (tx txImpl) IterateKeys() kvio.KeyCursor { return tx.Iterate() }
func (tx txImpl) Iterate() kvio.Cursor {
cur := tx.b.Cursor()
k0, v0 := cur.First()
return &cursor{cur, k0, v0}
}