client: support PrevIndex in SetOptions & DeleteOptions

release-2.1
Brian Waldon 2015-01-22 16:42:46 -08:00 committed by Yicheng Qin
parent 7ccf5eb476
commit bc32060b1d
2 changed files with 31 additions and 0 deletions

View File

@ -76,11 +76,13 @@ type KeysAPI interface {
type SetOptions struct {
PrevValue string
PrevIndex uint64
PrevExist PrevExistType
}
type DeleteOptions struct {
PrevValue string
PrevIndex uint64
Recursive bool
}
@ -287,6 +289,9 @@ func (a *setAction) HTTPRequest(ep url.URL) *http.Request {
if a.Options.PrevValue != "" {
params.Set("prevValue", a.Options.PrevValue)
}
if a.Options.PrevIndex != 0 {
params.Set("prevIndex", strconv.FormatUint(a.Options.PrevIndex, 10))
}
if a.Options.PrevExist != PrevIgnore {
params.Set("prevExist", string(a.Options.PrevExist))
}
@ -316,6 +321,9 @@ func (a *deleteAction) HTTPRequest(ep url.URL) *http.Request {
if a.Options.PrevValue != "" {
params.Set("prevValue", a.Options.PrevValue)
}
if a.Options.PrevIndex != 0 {
params.Set("prevIndex", strconv.FormatUint(a.Options.PrevIndex, 10))
}
if a.Options.Recursive {
params.Set("recursive", "true")
}

View File

@ -301,6 +301,18 @@ func TestSetAction(t *testing.T) {
wantURL: "http://example.com/foo?prevValue=bar+baz",
wantBody: "value=",
},
// PrevIndex is set
{
act: setAction{
Key: "foo",
Options: SetOptions{
PrevIndex: uint64(12),
},
},
wantURL: "http://example.com/foo?prevIndex=12",
wantBody: "value=",
},
}
for i, tt := range tests {
@ -398,6 +410,17 @@ func TestDeleteAction(t *testing.T) {
},
wantURL: "http://example.com/foo?prevValue=bar+baz",
},
// PrevIndex is set
{
act: deleteAction{
Key: "foo",
Options: DeleteOptions{
PrevIndex: uint64(12),
},
},
wantURL: "http://example.com/foo?prevIndex=12",
},
}
for i, tt := range tests {