1ebd66d880
* wip post-demos cleanup * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Reorganize: storage ├── common │ └── common.go `package storage` ├── boltdb │ └── ... └── redis └── ... storage ├── common.go `package storage` ├── boltdb │ └── ... └── redis └── ... storage ├── common │ ├── common.go `package storage` │ └── testing.go `package storage` <-- └── ... internal ├── app │ └── cli ├── pkg │ └── readcloser └── test └── util.go `package test` <-- * remove comment * add and use goimports * add test types & fix some lint errors * better typing * fixing linter issues/comments * goimports * goimports * more linter fixes; replace panic with NoError assertions in tests * fix typo/more linter errors * moar better linter fixes * even moar better linter fixes * linter * add localPort back * fixing exports, imports, and add comments
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
// Copyright (C) 2018 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package storage
|
|
|
|
// Key is the type for the keys in a `KeyValueStore`
|
|
type Key []byte
|
|
|
|
// Value is the type for the values in a `ValueValueStore`
|
|
type Value []byte
|
|
|
|
// Keys is the type for a slice of keys in a `KeyValueStore`
|
|
type Keys []Key
|
|
|
|
// KeyValueStore is an interface describing key/value stores like redis and boltdb
|
|
type KeyValueStore interface {
|
|
// Put adds a value to the provided key in the KeyValueStore, returning an error on failure.
|
|
Put(Key, Value) error
|
|
Get(Key) (Value, error)
|
|
List() (Keys, error)
|
|
Delete(Key) error
|
|
Close() error
|
|
}
|
|
|
|
// MarshalBinary implements the encoding.BinaryMarshaler interface for the Value type
|
|
func (v *Value) MarshalBinary() (_ []byte, _ error) {
|
|
return *v, nil
|
|
}
|
|
|
|
// MarshalBinary implements the encoding.BinaryMarshaler interface for the Key type
|
|
func (k *Key) MarshalBinary() (_ []byte, _ error) {
|
|
return *k, nil
|
|
}
|
|
|
|
// ByteSlices converts a `Keys` struct to a slice of byte-slices (i.e. `[][]byte`)
|
|
func (k *Keys) ByteSlices() [][]byte {
|
|
result := make([][]byte, len(*k))
|
|
|
|
for _k, v := range *k {
|
|
result[_k] = []byte(v)
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
// String implements the Stringer interface
|
|
func (k *Key) String() string {
|
|
return string(*k)
|
|
}
|