wasmcloud-interface-keyvalue

Crates.iowasmcloud-interface-keyvalue
lib.rswasmcloud-interface-keyvalue
version0.12.0
sourcesrc
created_at2021-08-12 21:38:57.446451
updated_at2023-09-19 21:41:41.034484
descriptionInterface for wasmCloud actors to access Key-Value stores (wasmcloud:keyvalue)
homepagehttps://github.com/wasmcloud/wasmcloud
repositoryhttps://github.com/wasmcloud/interfaces
max_upload_size
id435424
size51,049
wasmCloud Automation Bot (wasmcloud-automation)

documentation

README

crates.io  TinyGo Version

wasmCloud Key Value Interface

This is the key-value interface with the contract ID of wasmcloud:keyvalue. This interface defines a set of common operations for interacting with key-value stores.

Note that things like consistency guarantees, backup, failover support, replications, and more are all concerns specific to individual providers and not the interface itself.

Capability Provider Implementations

The following is a list of implementations of the wasmcloud:keyvalue contract. Feel free to submit a PR adding your implementation if you have a community/open source version.

Name Vendor Description
Redis wasmCloud wasmCloud key-value provider for the Redis database
Vault wasmCloud wasmCloud key-value provider for the Hashicorp Vault secrets engine.

Example Usage

🦀 Rust

Check if a value exists in the kvstore

use wasmbus_rpc::actor::prelude::Context;
use wasmcloud_interface_keyvalue::{KeyValue, KeyValueSender};

async fn key_exists(ctx: &Context, key: &str) -> bool {
    KeyValueSender::new().contains(ctx, key).await.is_ok()
}

Increment a numeric value

use wasmbus_rpc::actor::prelude::*;
use wasmcloud_interface_keyvalue::{IncrementRequest, KeyValue, KeyValueSender};
/// increment the counter by the amount, returning the new value
async fn increment_counter(ctx: &Context, key: String, value: i32) -> RpcResult<i32> {
    let new_val = KeyValueSender::new()
        .increment(ctx, &IncrementRequest { key, value })
        .await?;
    Ok(new_val)
}

🐭 Golang

Check if a value exists in the kvstore

import "github.com/wasmcloud/actor-tinygo"
import keyvalue "github.com/wasmcloud/interfaces/keyvalue/tinygo"

func KeyExists(ctx *actor.Context, key string) (bool, error){
   client := keyvalue.NewProviderKeyValue()
   return client.Contains(ctx, key)
}

Increment a numeric value

import "github.com/wasmcloud/actor-tinygo"
import keyvalue "github.com/wasmcloud/interfaces/keyvalue/tinygo"

func IncrementCounter(ctx *actor.Context, key string, value int32) (int32, error) {
   client := keyvalue.NewProviderKeyValue()
   return client.Increment(ctx, keyvalue.IncrementRequest{key, value})
}
Commit count: 313

cargo fmt