package clientv3util

import "github.com/coreos/etcd/clientv3/clientv3util"

Package clientv3util contains utility functions derived from clientv3.

Index

Examples

Functions

func KeyExists

func KeyExists(key string) clientv3.Cmp

KeyExists returns a comparison operation that evaluates to true iff the given key exists. It does this by checking if the key `Version` is greater than 0. It is a useful guard in transaction delete operations.

Example (Delete)

Code:play 

package main

import (
	"context"
	"log"

	"github.com/coreos/etcd/clientv3"
	"github.com/coreos/etcd/clientv3/clientv3util"
)

func main() {
	cli, err := clientv3.New(clientv3.Config{
		Endpoints: []string{"127.0.0.1:2379"},
	})
	if err != nil {
		log.Fatal(err)
	}
	defer cli.Close()
	kvc := clientv3.NewKV(cli)

	// perform a delete only if key already exists
	_, err = kvc.Txn(context.Background()).
		If(clientv3util.KeyExists("purpleidea")).
		Then(clientv3.OpDelete("purpleidea")).
		Commit()
	if err != nil {
		log.Fatal(err)
	}
}
Example (Put)

Code:play 

package main

import (
	"context"
	"log"

	"github.com/coreos/etcd/clientv3"
	"github.com/coreos/etcd/clientv3/clientv3util"
)

func main() {
	cli, err := clientv3.New(clientv3.Config{
		Endpoints: []string{"127.0.0.1:2379"},
	})
	if err != nil {
		log.Fatal(err)
	}
	defer cli.Close()
	kvc := clientv3.NewKV(cli)

	// perform a put only if key is missing
	// It is useful to do the check atomically to avoid overwriting
	// the existing key which would generate potentially unwanted events,
	// unless of course you wanted to do an overwrite no matter what.
	_, err = kvc.Txn(context.Background()).
		If(clientv3util.KeyMissing("purpleidea")).
		Then(clientv3.OpPut("purpleidea", "hello world")).
		Commit()
	if err != nil {
		log.Fatal(err)
	}
}

func KeyMissing

func KeyMissing(key string) clientv3.Cmp

KeyMissing returns a comparison operation that evaluates to true iff the given key does not exist.

Source Files

util.go

Version
v3.3.9+incompatible
Published
Jul 24, 2018
Platform
linux/amd64
Imports
1 packages
Last checked
18 minutes ago

Tools for package owners.