Simple KV store with an iterating scan interface, IO bound to limits of storage. No (yet) authentication or encryption.
cargo run -- --data /path/to/data --port <port> --mdbx
~ » grpcurl -plaintext localhost:7070 list skunkr.Data
skunkr.data.Data.Get
skunkr.data.Data.Scan
skunkr.data.Data.Set
Keys and data are base64 encoded byte arrays.
echo foobar | base64
Zm9vYmFyCg==
echo dingbat | base64
ZGluZ2JhdAo=
~ » grpcurl -plaintext -d '{"key": "Zm9vYmFyCg==", "value": "ZGluZ2JhdAo="}' localhost:7070 skunkr.Data.Set
{
"success": true
}
------------------------------------------------------------------------------------------------------------------------------
~ » grpcurl -plaintext -d '{"key": "Zm9vYmFyCg=="}' localhost:7070 skunkr.Data.Get
{
"value": "ZGluZ2JhdAo="
}
echo mickey | base64
bWlja2V5Cg==
echo mouse | base64
bW91c2UK
~ » grpcurl -plaintext -d '{"key": "bWlja2V5Cg==", "value": "bW91c2UK"}' localhost:7070 skunkr.Data.Set
{
"success": true
}
------------------------------------------------------------------------------------------------------------------------------
~ » grpcurl -plaintext -d '{"key": "bWlja2V5Cg=="}' localhost:7070 skunkr.Data.Get
{
"value": "bW91c2UK"
}
echo foo | base64
Zm9vCg==
~ » grpcurl -plaintext -d '{"from": "Zm9vCg=="}' localhost:7070 skunkr.Data.Scan
{
"key": "Zm9vYmFyCg==",
"value": "ZGluZ2JhdAo="
}
{
"key": "bWlja2V5Cg==",
"value": "bW91c2UK"
}