123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package hrpc
- import (
- "fmt"
- "github.com/golang/protobuf/proto"
- "github.com/tsuna/gohbase/filter"
- "github.com/tsuna/gohbase/pb"
- )
- type CheckAndPut struct {
- *Mutate
- family []byte
- qualifier []byte
- comparator *pb.Comparator
- }
- func NewCheckAndPut(put *Mutate, family string,
- qualifier string, expectedValue []byte) (*CheckAndPut, error) {
- if put.mutationType != pb.MutationProto_PUT {
- return nil, fmt.Errorf("'CheckAndPut' only takes 'Put' request")
- }
-
- exp := filter.NewByteArrayComparable(expectedValue)
- cmp, err := filter.NewBinaryComparator(exp).ConstructPBComparator()
- if err != nil {
- return nil, err
- }
-
-
- put.setSkipBatch(true)
- return &CheckAndPut{
- Mutate: put,
- family: []byte(family),
- qualifier: []byte(qualifier),
- comparator: cmp,
- }, nil
- }
- func (cp *CheckAndPut) ToProto() proto.Message {
- mutateRequest := cp.toProto()
- mutateRequest.Condition = &pb.Condition{
- Row: cp.key,
- Family: cp.family,
- Qualifier: cp.qualifier,
- CompareType: pb.CompareType_EQUAL.Enum(),
- Comparator: cp.comparator,
- }
- return mutateRequest
- }
|