summaryrefslogtreecommitdiff
path: root/plugins/kv/interface.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/kv/interface.go')
-rw-r--r--plugins/kv/interface.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/plugins/kv/interface.go b/plugins/kv/interface.go
new file mode 100644
index 00000000..c1367cdf
--- /dev/null
+++ b/plugins/kv/interface.go
@@ -0,0 +1,41 @@
+package kv
+
+// Item represents general storage item
+type Item struct {
+ // Key of item
+ Key string
+ // Value of item
+ Value string
+ // live until time provided by TTL in RFC 3339 format
+ TTL string
+}
+
+// Storage represents single abstract storage.
+type Storage interface {
+ // Has checks if value exists.
+ Has(keys ...string) (map[string]bool, error)
+
+ // Get loads value content into a byte slice.
+ Get(key string) ([]byte, error)
+
+ // MGet loads content of multiple values
+ // Returns the map with existing keys and associated values
+ MGet(keys ...string) (map[string]interface{}, error)
+
+ // Set used to upload item to KV with TTL
+ // 0 value in TTL means no TTL
+ Set(items ...Item) error
+
+ // MExpire sets the TTL for multiply keys
+ MExpire(items ...Item) error
+
+ // TTL return the rest time to live for provided keys
+ // Not supported for the memcached and boltdb
+ TTL(keys ...string) (map[string]interface{}, error)
+
+ // Delete one or multiple keys.
+ Delete(keys ...string) error
+
+ // Close closes the storage and underlying resources.
+ Close() error
+}