Crates.io | wasmcloud-interface-keyvalue |
lib.rs | wasmcloud-interface-keyvalue |
version | 0.12.0 |
source | src |
created_at | 2021-08-12 21:38:57.446451 |
updated_at | 2023-09-19 21:41:41.034484 |
description | Interface for wasmCloud actors to access Key-Value stores (wasmcloud:keyvalue) |
homepage | https://github.com/wasmcloud/wasmcloud |
repository | https://github.com/wasmcloud/interfaces |
max_upload_size | |
id | 435424 |
size | 51,049 |
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.
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. |
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)
}
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})
}