mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-05-20 17:28:40 +00:00
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
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)
|
|
}
|