MM-16821 - Add a KVCompareAndDelete to the plugin API (#11804)

* Implement KVCompareAndDelete and KVCompareAndDeleteJSON

* Add tests for KVCompareAndDelete

* Update minimum server version

* Handle nil value on CompareAndSet so that it deletes it

* Fix comments

* Tweaks from PR comments

* Go back to deleted, err
Этот коммит содержится в:
Gervasio Marchand
2019-08-21 23:25:38 -03:00
коммит произвёл Jesse Hallam
родитель f8ad9f3b8f
Коммит 11b0a20d7d
13 изменённых файлов: 281 добавлений и 0 удалений

Просмотреть файл

@@ -3521,6 +3521,36 @@ func (s *apiRPCServer) KVCompareAndSet(args *Z_KVCompareAndSetArgs, returns *Z_K
return nil
}
type Z_KVCompareAndDeleteArgs struct {
A string
B []byte
}
type Z_KVCompareAndDeleteReturns struct {
A bool
B *model.AppError
}
func (g *apiRPCClient) KVCompareAndDelete(key string, oldValue []byte) (bool, *model.AppError) {
_args := &Z_KVCompareAndDeleteArgs{key, oldValue}
_returns := &Z_KVCompareAndDeleteReturns{}
if err := g.client.Call("Plugin.KVCompareAndDelete", _args, _returns); err != nil {
log.Printf("RPC call to KVCompareAndDelete API failed: %s", err.Error())
}
return _returns.A, _returns.B
}
func (s *apiRPCServer) KVCompareAndDelete(args *Z_KVCompareAndDeleteArgs, returns *Z_KVCompareAndDeleteReturns) error {
if hook, ok := s.impl.(interface {
KVCompareAndDelete(key string, oldValue []byte) (bool, *model.AppError)
}); ok {
returns.A, returns.B = hook.KVCompareAndDelete(args.A, args.B)
} else {
return encodableError(fmt.Errorf("API KVCompareAndDelete called but not implemented."))
}
return nil
}
type Z_KVSetWithExpiryArgs struct {
A string
B []byte