lib/kv: add key-value database api #5587

Add bolt-based key-value database support.

Quick API description:
https://github.com/rclone/rclone/pull/5587#issuecomment-942174768
This commit is contained in:
Ivan Andreev
2021-10-12 14:57:54 +03:00
parent 8cd3251b57
commit 50df8cec9c
6 changed files with 391 additions and 0 deletions

40
lib/kv/unsupported.go Normal file
View File

@@ -0,0 +1,40 @@
//go:build plan9 || js
// +build plan9 js
package kv
import (
"context"
"github.com/rclone/rclone/fs"
)
// DB represents a key-value database
type DB struct{}
// Supported returns true on supported OSes
func Supported() bool { return false }
// Start a key-value database
func Start(ctx context.Context, facility string, f fs.Fs) (*DB, error) {
return nil, ErrUnsupported
}
// Get returns database for given filesystem and facility
func Get(f fs.Fs, facility string) *DB { return nil }
// Path returns database path
func (*DB) Path() string { return "UNSUPPORTED" }
// Do submits a key-value request and waits for results
func (*DB) Do(write bool, op Op) error {
return ErrUnsupported
}
// Stop a database loop, optionally removing the file
func (*DB) Stop(remove bool) error {
return ErrUnsupported
}
// Exit stops all databases
func Exit() {}