wasmcloud-interface-keyvalue 0.9.1

Interface for wasmCloud actors to access Key-Value stores (wasmcloud:keyvalue)
Documentation

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)
}