summaryrefslogtreecommitdiff
path: root/vendor/git.iim.gay/grufwub/go-store/storage/storage.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/git.iim.gay/grufwub/go-store/storage/storage.go')
-rw-r--r--vendor/git.iim.gay/grufwub/go-store/storage/storage.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/vendor/git.iim.gay/grufwub/go-store/storage/storage.go b/vendor/git.iim.gay/grufwub/go-store/storage/storage.go
new file mode 100644
index 000000000..61f722111
--- /dev/null
+++ b/vendor/git.iim.gay/grufwub/go-store/storage/storage.go
@@ -0,0 +1,51 @@
+package storage
+
+import (
+ "io"
+)
+
+// StorageEntry defines a key in Storage
+type StorageEntry interface {
+ // Key returns the storage entry's key
+ Key() string
+}
+
+// entry is the simplest possible StorageEntry
+type entry string
+
+func (e entry) Key() string {
+ return string(e)
+}
+
+// Storage defines a means of storing and accessing key value pairs
+type Storage interface {
+ // Clean removes unused values and unclutters the storage (e.g. removing empty folders)
+ Clean() error
+
+ // ReadBytes returns the byte value for key in storage
+ ReadBytes(key string) ([]byte, error)
+
+ // ReadStream returns an io.ReadCloser for the value bytes at key in the storage
+ ReadStream(key string) (io.ReadCloser, error)
+
+ // WriteBytes writes the supplied value bytes at key in the storage
+ WriteBytes(key string, value []byte) error
+
+ // WriteStream writes the bytes from supplied reader at key in the storage
+ WriteStream(key string, r io.Reader) error
+
+ // Stat checks if the supplied key is in the storage
+ Stat(key string) (bool, error)
+
+ // Remove attempts to remove the supplied key-value pair from storage
+ Remove(key string) error
+
+ // WalkKeys walks the keys in the storage
+ WalkKeys(opts *WalkKeysOptions) error
+}
+
+// WalkKeysOptions defines how to walk the keys in a storage implementation
+type WalkKeysOptions struct {
+ // WalkFn is the function to apply on each StorageEntry
+ WalkFn func(StorageEntry)
+}