Explorar o código

Merge pull request #8516 from purpleidea/feat/leaseid-okay

clientv3: Allow naked LeaseID or int64 for LeaseValue Compare's
Xiang Li %!s(int64=8) %!d(string=hai) anos
pai
achega
10b731baa8
Modificáronse 1 ficheiros con 11 adicións e 1 borrados
  1. 11 1
      clientv3/compare.go

+ 11 - 1
clientv3/compare.go

@@ -61,7 +61,7 @@ func Compare(cmp Cmp, result string, v interface{}) Cmp {
 	case pb.Compare_MOD:
 		cmp.TargetUnion = &pb.Compare_ModRevision{ModRevision: mustInt64(v)}
 	case pb.Compare_LEASE:
-		cmp.TargetUnion = &pb.Compare_Lease{Lease: mustInt64(v)}
+		cmp.TargetUnion = &pb.Compare_Lease{Lease: mustInt64orLeaseID(v)}
 	default:
 		panic("Unknown compare type")
 	}
@@ -119,6 +119,7 @@ func (cmp Cmp) WithPrefix() Cmp {
 	return cmp
 }
 
+// mustInt64 panics if val isn't an int or int64. It returns an int64 otherwise.
 func mustInt64(val interface{}) int64 {
 	if v, ok := val.(int64); ok {
 		return v
@@ -128,3 +129,12 @@ func mustInt64(val interface{}) int64 {
 	}
 	panic("bad value")
 }
+
+// mustInt64orLeaseID panics if val isn't a LeaseID, int or int64. It returns an
+// int64 otherwise.
+func mustInt64orLeaseID(val interface{}) int64 {
+	if v, ok := val.(LeaseID); ok {
+		return int64(v)
+	}
+	return mustInt64(val)
+}