Skip to content

Latest commit

 

History

History
66 lines (45 loc) · 2.39 KB

README.md

File metadata and controls

66 lines (45 loc) · 2.39 KB

wasmcloud-provider-couchbase

This is a capability provider for wasmCloud to provide Couchbase KV connectivity to Wasm applications via wasi-keyvalue. At the moment it supports the wasi:keyvalue/store@0.2.0-draft interface.

This provider uses the RawJSONTranscoder for Couchbase, storing any new keys as binary data. Since the wasi-keyvalue interface works entirely in storing and retrieving binary data, the deserialization into a struct or structured data must be done on the component side.

Build

Prerequisites:

Build this capability provider with:

wash build

Run

Prerequisites

  • wash 0.30 or later
  • The secrets-nats-kv CLI installed (for now this requires a Rust toolchain)
  • A built couchbase capability provider, see #build
  • Setup Couchbase server with the required configuration for testing using docker-compose.yaml in the repo.
docker-compose up -d

Alternatively, you can use Quick Install guide with a bucket named test created.

Running

cd examples/wasi-keyvalue
WASMCLOUD_SECRETS_TOPIC=wasmcloud.secrets \
    wash up -d

# Generate encryption keys and run the backend
export ENCRYPTION_XKEY_SEED=$(wash keys gen curve -o json | jq -r '.seed')
export TRANSIT_XKEY_SEED=$(wash keys gen curve -o json | jq -r '.seed')
secrets-nats-kv run &
# Put the password in the NATS KV secrets backend
provider_key=$(wash inspect ./build/wasmcloud-provider-couchbase.par.gz -o json | jq -r '.service')
secrets-nats-kv put couchbase_password --string password
secrets-nats-kv add-mapping $provider_key --secret couchbase_password
wash app deploy ./wadm.yaml

Then you can test the increment functionality with cURL:

curl localhost:8080/couchbase

Test

To test the WIT bindings, download wit-bindgen and run the following:

wit-deps && wit-bindgen rust --out-dir /tmp/wit wit/

This will attempt to generate Rust based bindings, in a folder under /tmp (which will be cleaned up eventually), but in doing so, will check that the WIT definitions are valid (as they must be to complete binding generation).