Skip to content

couchbaselabs/wasmcloud-provider-couchbase

Repository files navigation

Open in Gitpod

wasmcloud-provider-couchbase

This is a capability provider for wasmCloud to provide Couchbase KV connectivity to Wasm applications via the wasmcloud-couchbase interface.

This provider uses the RawJSONTranscoder for Couchbase, storing any new keys as binary data. The deserialization into a struct or structured data must be done on the component side as the provider does not have information about the desired shape of data.

Interface support

Build

Prerequisites:

Build this capability provider with:

wash build

Build the example components with:

wash build -p components/rust
wash build -p components/golang

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

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 invoke either the Rust component or the Golang component on port 8080 and 8081, respectively. Both components implement the exact same functionality, which simply takes a payload and a path to roundtrip a JSON document in Couchbase.

curl -d '{"demo": true, "couchbase": "db", "wasmcloud": "application platform"}' \
    localhost:8080/mykey
{"demo": true, "couchbase": "db", "wasmcloud": "application platform"}%

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

About

Wasmcloud Couchbase capabilities provider

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages