// CPut conditionally sets the value for a key if the existing value is equal // to expValue. To conditionally set a value only if there is no existing entry // pass nil for expValue. // // A new result will be appended to the batch which will contain a single row // and Result.Err will indicate success or failure. // // key can be either a byte slice, a string, a fmt.Stringer or an // encoding.BinaryMarshaler. value can be any key type or a proto.Message. func (b *Batch) CPut(key, value, expValue interface{}) { k, err := marshalKey(key) if err != nil { b.initResult(0, 1, err) return } v, err := marshalValue(reflect.ValueOf(value)) if err != nil { b.initResult(0, 1, err) return } ev, err := marshalValue(reflect.ValueOf(expValue)) if err != nil { b.initResult(0, 1, err) return } b.calls = append(b.calls, proto.ConditionalPutCall(proto.Key(k), v.Bytes, ev.Bytes)) b.initResult(1, 1, nil) }
// CPut conditionally sets the value for a key if the existing value is equal // to expValue. To conditionally set a value only if there is no existing entry // pass nil for expValue. // // A new result will be appended to the batch which will contain a single row // and Result.Err will indicate success or failure. // // key can be either a byte slice or a string. value can be any key type, a // proto.Message or any Go primitive type (bool, int, etc). func (b *Batch) CPut(key, value, expValue interface{}) { k, err := marshalKey(key) if err != nil { b.initResult(0, 1, err) return } v, err := marshalValue(value) if err != nil { b.initResult(0, 1, err) return } ev, err := marshalValue(expValue) if err != nil { b.initResult(0, 1, err) return } b.calls = append(b.calls, proto.ConditionalPutCall(k, v, ev)) b.initResult(1, 1, nil) }