Documentation
¶
Overview ¶
Package dstore describes a document store.
Index ¶
- func Data(b []byte) map[string]interface{}
- func Empty() map[string]interface{}
- func From(i interface{}) map[string]interface{}
- func Load(ctx context.Context, d Documents, path string, v interface{}) (bool, error)
- func Path(paths ...interface{}) string
- func PathComponents(path string) []string
- func PathFirst(path string) string
- func PathFrom(path string, n int) string
- func PathLast(path string) string
- func Paths(docs []*Document) []string
- func SetLogger(l Logger)
- func Spew(iter Iterator) (string, error)
- func SpewOut(iter Iterator, out io.Writer) error
- type Collection
- type CollectionIterator
- type ContextLogger
- type Document
- func (d *Document) Bytes(name string) []byte
- func (d *Document) Data() []byte
- func (d *Document) Get(name string) (interface{}, bool)
- func (d *Document) Int(name string) (int, bool)
- func (d *Document) Int64(name string) (int64, bool)
- func (d *Document) Set(name string, i interface{})
- func (d *Document) SetAll(m map[string]interface{})
- func (d *Document) String(name string) (string, bool)
- func (d *Document) To(i interface{}) error
- func (d *Document) Values() map[string]interface{}
- func (d *Document) With(m map[string]interface{}) *Document
- func (d *Document) WithData(b []byte) *Document
- type Documents
- type ErrNotFound
- type ErrPathExists
- type Iterator
- type LogLevel
- type Logger
- type Mem
- func (m *Mem) Collections(ctx context.Context, parent string) ([]*Collection, error)
- func (m *Mem) Create(ctx context.Context, path string, values map[string]interface{}) error
- func (m *Mem) Delete(ctx context.Context, path string) (bool, error)
- func (m *Mem) DeleteAll(ctx context.Context, paths []string) error
- func (m *Mem) DocumentIterator(ctx context.Context, parent string, opt ...Option) (Iterator, error)
- func (m *Mem) Documents(ctx context.Context, parent string, opt ...Option) ([]*Document, error)
- func (m *Mem) EventAdd(ctx context.Context, path string, doc events.Document) (int64, error)
- func (m *Mem) EventPosition(ctx context.Context, path string) (*events.Position, error)
- func (m *Mem) EventPositions(ctx context.Context, paths []string) (map[string]*events.Position, error)
- func (m *Mem) Events(ctx context.Context, path string, opt ...events.Option) (events.Iterator, error)
- func (m *Mem) EventsAdd(ctx context.Context, path string, docs []events.Document) (int64, error)
- func (m *Mem) EventsDelete(ctx context.Context, path string) (bool, error)
- func (m *Mem) Exists(ctx context.Context, path string) (bool, error)
- func (m *Mem) Get(ctx context.Context, path string) (*Document, error)
- func (m *Mem) GetAll(ctx context.Context, paths []string) ([]*Document, error)
- func (m *Mem) Increment(ctx context.Context, path string, name string, n int64) (int64, int64, error)
- func (m *Mem) Load(ctx context.Context, path string, v interface{}) (bool, error)
- func (m *Mem) Now() time.Time
- func (m *Mem) Set(ctx context.Context, path string, values map[string]interface{}, ...) error
- func (m *Mem) SetClock(clock tsutil.Clock)
- func (m *Mem) SetMode(mode Mode)
- func (m *Mem) Update(ctx context.Context, path string, values map[string]interface{}) error
- type Mode
- type Option
- type Options
- type SetOption
- type SetOptions
- type StringSet
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func From ¶
func From(i interface{}) map[string]interface{}
From interface to map. If error, nil is returned. Uses msgpack and will fallback to json tags if msgpack tags are missing.
func Path ¶
func Path(paths ...interface{}) string
Path returns a path string from the specified paths or path components. The components can be strings, values with a String() function.
For example,
Path("a", "b") => "/a/b"
Path("") => "/"
Path("/a/") => "/a"
Path("/a//b") => "/a/b"
func PathComponents ¶
PathComponents returns the components of a path.
Types ¶
type Collection ¶
type Collection struct {
// Path for collection.
Path string
}
Collection is a location for Document's.
type CollectionIterator ¶
type CollectionIterator interface {
// Next collection, or nil.
Next() (*Collection, error)
// Release resources associated with the iterator.
Release()
}
CollectionIterator is an iterator for Collection's.
func NewCollectionIterator ¶
func NewCollectionIterator(cols []*Collection) CollectionIterator
NewCollectionIterator returns an iterator for a Collection slice.
type ContextLogger ¶
type ContextLogger interface {
Debugf(ctx context.Context, format string, args ...interface{})
Infof(ctx context.Context, format string, args ...interface{})
Warningf(ctx context.Context, format string, args ...interface{})
Errorf(ctx context.Context, format string, args ...interface{})
}
ContextLogger interface used in this package with request context.
type Document ¶
type Document struct {
// Path of document.
Path string
// CreatedAt (read only). The time at which the document was created.
CreatedAt time.Time
// UpdatedAt (read only). The time at which the document was last changed.
UpdatedAt time.Time
// contains filtered or unexported fields
}
Document at a path.
func NewDocument ¶
NewDocument creates a document with data.
func (*Document) SetAll ¶
SetAll values on document. Overwrites any existing values. We do not clone the map.
type Documents ¶
type Documents interface {
// Create document at path.
// ErrPathExists if path already exists.
//
// To marshal a value, use dstore.From(v) to convert to a map (using msgpack or json tags).
// If merging and using dstore.From(v), fields with omitempty will no overwrite existing values.
//
// Paths can be nested as long as they are even length components.
// For example,
//
// collection1/key1 (OK)
// collection1/key1/collection2/key2 (OK)
// collection1 (INVALID)
// collection1/key1/collection2 (INVALID)
//
Create(ctx context.Context, path string, values map[string]interface{}) error
// Set (or create or update) document at path.
// This will overwrite any existing document data, unless you specify MergeAll() option.
//
// To marshal a value, use dstore.From(v) to convert to a map (using msgpack or json tags).
// If merging and using dstore.From(v), fields with omitempty will no overwrite existing values.
//
// To update a document:
//
// update := map[string]interface{}{
// "property1": value1,
// }
// err := fi.Set(ctx, path, update, dstore.MergeAll())
//
// Paths can be nested as long as they are even length components.
// For example,
//
// collection1/key1 (OK)
// collection1/key1/collection2/key2 (OK)
// collection1 (INVALID)
// collection1/key1/collection2 (INVALID)
//
Set(ctx context.Context, path string, values map[string]interface{}, opt ...SetOption) error
// Get path.
// If not found, returns nil.
Get(ctx context.Context, path string) (*Document, error)
// Load path into value.
// This is shorthand for Get and doc.To(&val).
Load(ctx context.Context, path string, v interface{}) (bool, error)
// GetAll at paths.
// If a path is not found, it is ignored.
GetAll(ctx context.Context, paths []string) ([]*Document, error)
// Exists, if exists at path.
Exists(ctx context.Context, path string) (bool, error)
// Delete at path.
Delete(ctx context.Context, path string) (bool, error)
// DeleteAll paths. If a path is not found, it is ignored.
DeleteAll(ctx context.Context, paths []string) error
// DocumentIterator.
DocumentIterator(ctx context.Context, parent string, opt ...Option) (Iterator, error)
// Documents ...
Documents(ctx context.Context, parent string, opt ...Option) ([]*Document, error)
// Collections are parents of Documents.
Collections(ctx context.Context, parent string) ([]*Collection, error)
}
Documents describes a Document store.
type ErrNotFound ¶
type ErrNotFound struct {
Path string
}
ErrNotFound if path not found.
func (ErrNotFound) Error ¶
func (e ErrNotFound) Error() string
type ErrPathExists ¶
type ErrPathExists struct {
Path string
}
ErrPathExists is trying to set value that already exists.
func (ErrPathExists) Error ¶
func (e ErrPathExists) Error() string
type Iterator ¶
type Iterator interface {
// Next document, or nil.
Next() (*Document, error)
// Release resources associated with the iterator.
Release()
}
Iterator is an iterator for Document's.
func NewIterator ¶
NewIterator returns an iterator for a Document slice.
type Logger ¶
type Logger interface {
Debugf(format string, args ...interface{})
Infof(format string, args ...interface{})
Warningf(format string, args ...interface{})
Errorf(format string, args ...interface{})
Fatalf(format string, args ...interface{})
}
Logger interface used in this package.
type Mem ¶
Mem is an in memory Documents implementation.
func (*Mem) Collections ¶
Collections ...
func (*Mem) DocumentIterator ¶
DocumentIterator ...
func (*Mem) EventPosition ¶ added in v0.1.22
func (*Mem) EventPositions ¶
func (m *Mem) EventPositions(ctx context.Context, paths []string) (map[string]*events.Position, error)
EventPositions returns positions for event logs at the specified paths.
func (*Mem) Events ¶
func (m *Mem) Events(ctx context.Context, path string, opt ...events.Option) (events.Iterator, error)
Events ...
func (*Mem) EventsDelete ¶
EventsDelete removes all events at path.
func (*Mem) Set ¶
func (m *Mem) Set(ctx context.Context, path string, values map[string]interface{}, opt ...SetOption) error
Set document at path.
type Mode ¶ added in v0.1.21
type Mode string
Mode for any special behavior.
const (
FirestoreCompatibilityMode Mode = "firestore"
)
Modes for compability
type Options ¶
type Options struct {
// Prefix to filter on.
Prefix string
// Index is offset into number of documents.
Index int
// Limit is number of documents (max) to return.
Limit int
// NoData to only include only path in Document (no data).
NoData bool
// Where
Where *where
}
Options ...
type StringSet ¶
type StringSet struct {
// contains filtered or unexported fields
}
StringSet is a set of strings.
func NewStringSetSplit ¶
NewStringSetSplit creates StringSet for split string.
func NewStringSetWithCapacity ¶
NewStringSetWithCapacity ..