summaryrefslogtreecommitdiff
path: root/vendor/git.iim.gay/grufwub/go-store/storage/storage.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2021-09-12 10:10:24 +0100
committerLibravatar GitHub <noreply@github.com>2021-09-12 10:10:24 +0100
commitf6492d12d948507021bbe934de94e87e20464c01 (patch)
tree6705d6ef6f3c4d70f3b3ebc77c2960d8e508cf37 /vendor/git.iim.gay/grufwub/go-store/storage/storage.go
parentMerge pull request #213 from superseriousbusiness/alpine+node_upstep (diff)
parentfix keys used to access storage items (diff)
downloadgotosocial-f6492d12d948507021bbe934de94e87e20464c01.tar.xz
Merge pull request #214 from NyaaaWhatsUpDoc/improvement/update-storage-library
add git.iim.gay/grufwub/go-store for storage backend, replacing blob.Storage
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)
+}