Files
plugins/datastore
Rusty Russell 1f6f701bf1 datastore: plugin to replicate datastore commands before next release.
See https://github.com/ElementsProject/lightning/pull/4674
(I manually tested that it passes all the tests there, too!)

When they finally upgrade the node, this automatically puts any
datastore data into the inbuilt datastore and shuts down.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-07-25 10:56:40 +09:30
..

Datastore Plugin

The next version of c-lightning (0.10.2?) has a built-in datastore.

Until then, this plugin serves the same purpose, and has the same interface. When it detects that you have upgraded, it will place its datastore into the built-in one and shut down.

The plugin (datastore.py) is a bit weird, in that it loads the real plugin if it detects that it is needed. This is because a plugin cannot replace an existing command, so it would fail badly when you finally upgrade.

Usage

Just add it to your .lightning/config file as "plugin=/path/to/plugin/datastore.py".

This plugin is usually used by other plugins to store and retreive data. The commands, briefly, are:

datastore key [string] [hex] [mode]

There can only be one entry for each key, so prefixing with the plugin name (e.g. summary.) is recommended.

mode is one of "must-create" (default, fails it it already exists), "must-replace" (fails it it doesn't already exist), "create-or-replace" (never fails), "must-append" (must already exist, append this to what's already there) or "create-or-append" (append if anything is there, otherwise create).

deldatastore key

The command fails if the key isn't present.

listdatastore [key]

Fetch data which was stored in the database.

All entries are returned in key isn't present; if key is present, zero or one entries are returned.

Author

Rusty Russell wrote this so he can use it before the next release, and plugins can start relying on storing data.