Skip to main content

collections Adaptor developer README.md

Source: https://github.com/OpenFn/adaptors/tree/main/packages/collections

language-collections

An adaptor for using the OpenFn Collections API.

The Collections adaptor is not designed to be used alone, but in conjunction with other adaptors. As a result, it's a bit different to other adaptors.

The Collections API is a key/value store, which can act as a high performance cache, buffer or storage solution. All values are strings (but can contain JSON).

Usage

All collections functions are exposed through the collections namespace:

To iterate over all values with 2024 somewhere in the key

collections.each($.collectionName, '*2024*', (state, value, key) => {
console.log(value)
})

Documentation

View the docs site for full technical documentation.

CLI

Collections can be used from the CLI since v1.8.7, but you will need to:

  • Set the job to use two adaptors
  • Pass a Personal Access Token
  • Set the Collections endpoint

You can get a Personal Access Token from any v2 deployment.

For a single job

You can pass multiple adaptors from the CLI:

openfn job.js -a collections -a http -s state.json

You'll need to set configuration on the state.json:

{
"configuration": {
"collections_endpoint": "http://localhost:4000/collections",
"collections_token": "...paste the token from the app..."
}
}

For a workflow

If you're using workflow.json, set the token and endpoint on workflow.credentials:

{
"workflow": {
"steps": [ ... ],
"credentials": {
"collections_endpoint": "http://localhost:4000/collections",
"collections_token": "...paste the token from the app..."
}
}
}

And make sure that any steps which use collections have multiple adaptors set:

{
"workflow": {
"steps": [
{
"expression": "...",
"adaptors": ["@openfn/language-http", "@openfn/language-collections"]
}
]
}
}

Note that steps cannot generally use multiple adaptors. Collections are special in this regard.

Deployments

Collections must be configured for your platform instance (v2 only).

Set the WORKER_COLLECTIONS_URL env var on the Worker instance to enable collections for that worker. The URL should point to https://<lightning>/collections

Development

Clone the adaptors monorepo. Follow the "Getting Started" guide inside to get set up.

Run tests using pnpm run test or pnpm run test:watch

Build the project using pnpm build.

To build only the docs run pnpm build docs.