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.
Prerequisites:
- wash 0.30 or later
Build this capability provider with:
wash build
- 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.
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
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).