sss

package
v0.24.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2024 License: Apache-2.0, Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

sss package stays for Simple Storage Service which provides an interface to the cloud services like AWS S3

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsKeyValid

func IsKeyValid(key string) bool

IsKeyValid checks whether the key is valid: <path><keysuffix> where the keysuffix is a string without '/'

func IsPathValid

func IsPathValid(path string) bool

IsPathValid checks whether the path is valid: it should start and end on '/'

func TestSimpleStorage

func TestSimpleStorage(t *testing.T, ss Storage)

TestSimpleStorage a bunch of tests run against a kvs instance

Types

type Storage

type Storage interface {
	// Get allows to read a value by its key. If key is not found the
	// ErrNotExist should be returned
	Get(ctx context.Context, key string) (io.ReadCloser, error)

	// Put allows to store value represented by reader r by the key
	Put(ctx context.Context, key string, r io.Reader) error

	// List returns a list of keys and sub-paths (part of an existing path which
	// is a path itself), which have the prefix of the path argument
	//
	// Example:
	// for the keys list: "/abc", "/def/abc", "/def/aa1"
	// List("/") -> "/abc", "/def/"
	// List("/def/") -> "/def/abc", "/def/aa1"
	List(ctx context.Context, path string) ([]string, error)

	// Delete allows to delete a value by key. If the key doesn't exist, the operation
	// will return no error
	Delete(ctx context.Context, key string) error
}

Storage interface provides access to the Key-Value Simple service. "Simple" means consistency model like "eventual" or stronger one. The purpose of the key-value storage is persisting values (may be BLOBs), which could be found by the keys.

The key represents a file-system alike path and ID to the value. The following conventions are applied:

  • any key starts from '/' which is called delimiter
  • a key cannot end on '/' delimiter
  • the prefix of key, which starts from '/' and ends on '/' called path
  • any key consists of 2 parts <path><valId>, where valId is a value identifier within the path. valId cannot contain delimiters

Examples: "/abc" - the key with path="/" and valId="abc" "/abc/def/ms.js" - the key with path="/abc/def/" and valId="ms.js" "abc.js", "", "/", "/abc/" - are not keys

A Value is an object (may be big one), the limitations can be applied by the implementation

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL