Valkeyrie DynamoDB

September 8, 2022 ยท View on GitHub

GoDoc Build Status Go Report Card

valkeyrie provides a Go native library to store metadata using Distributed Key/Value stores (or common databases).

Compatibility

A storage backend in valkeyrie implements (fully or partially) the Store interface.

CallsDynamoDB
Put๐ŸŸข๏ธ
Get๐ŸŸข๏ธ
Delete๐ŸŸข๏ธ
Exists๐ŸŸข๏ธ
Watch๐Ÿ”ด
WatchTree๐Ÿ”ด
NewLock (Lock/Unlock)๐ŸŸข๏ธ
List๐ŸŸข๏ธ
DeleteTree๐ŸŸข๏ธ
AtomicPut๐ŸŸข๏ธ
AtomicDelete๐ŸŸข๏ธ

Examples

package main

import (
	"context"
	"log"

	"github.com/kvtools/dynamodb"
	"github.com/kvtools/valkeyrie"
)

func main() {
	ctx := context.Background()

	config := &dynamodb.Config{
			Bucket: "example",
	}

	kv, err := valkeyrie.NewStore(ctx, dynamodb.StoreName, []string{"localhost:8500"}, config)
	if err != nil {
		log.Fatal("Cannot create store")
	}

	key := "foo"

	err = kv.Put(ctx, key, []byte("bar"), nil)
	if err != nil {
		log.Fatalf("Error trying to put value at key: %v", key)
	}

	pair, err := kv.Get(ctx, key, nil)
	if err != nil {
		log.Fatalf("Error trying accessing value at key: %v", key)
	}

	err = kv.Delete(ctx, key)
	if err != nil {
		log.Fatalf("Error trying to delete key %v", key)
	}

	log.Printf("value: %s", string(pair.Value))
}