mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
51 lines
1,007 B
Go
51 lines
1,007 B
Go
//go:build tikv
|
|
// +build tikv
|
|
|
|
package tikv
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/chrislusf/seaweedfs/weed/filer"
|
|
"github.com/tikv/client-go/v2/txnkv"
|
|
)
|
|
|
|
func (store *TikvStore) KvPut(ctx context.Context, key []byte, value []byte) error {
|
|
tw, err := store.getTxn(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return tw.RunInTxn(func(txn *txnkv.KVTxn) error {
|
|
return txn.Set(key, value)
|
|
})
|
|
}
|
|
|
|
func (store *TikvStore) KvGet(ctx context.Context, key []byte) ([]byte, error) {
|
|
tw, err := store.getTxn(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var data []byte = nil
|
|
err = tw.RunInTxn(func(txn *txnkv.KVTxn) error {
|
|
val, err := txn.Get(context.TODO(), key)
|
|
if err == nil {
|
|
data = val
|
|
}
|
|
return err
|
|
})
|
|
if isNotExists(err) {
|
|
return data, filer.ErrKvNotFound
|
|
}
|
|
return data, err
|
|
}
|
|
|
|
func (store *TikvStore) KvDelete(ctx context.Context, key []byte) error {
|
|
tw, err := store.getTxn(ctx)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return tw.RunInTxn(func(txn *txnkv.KVTxn) error {
|
|
return txn.Delete(key)
|
|
})
|
|
}
|