1// Package storedefs contains definitions of the store API.
2//
3// It is a separate package so that packages that only depend on the store API
4// does not need to depend on the concrete implementation.
5package storedefs
6
7import "errors"
8
9// NoBlacklist is an empty blacklist, to be used in GetDirs.
10var NoBlacklist = map[string]struct{}{}
11
12// ErrNoMatchingCmd is the error returned when a LastCmd or FirstCmd query
13// completes with no result.
14var ErrNoMatchingCmd = errors.New("no matching command line")
15
16// Store is an interface satisfied by the storage service.
17type Store interface {
18	NextCmdSeq() (int, error)
19	AddCmd(text string) (int, error)
20	DelCmd(seq int) error
21	Cmd(seq int) (string, error)
22	CmdsWithSeq(from, upto int) ([]Cmd, error)
23	NextCmd(from int, prefix string) (Cmd, error)
24	PrevCmd(upto int, prefix string) (Cmd, error)
25
26	AddDir(dir string, incFactor float64) error
27	DelDir(dir string) error
28	Dirs(blacklist map[string]struct{}) ([]Dir, error)
29
30	SharedVar(name string) (string, error)
31	SetSharedVar(name, value string) error
32	DelSharedVar(name string) error
33}
34
35// Dir is an entry in the directory history.
36type Dir struct {
37	Path  string
38	Score float64
39}
40
41func (Dir) IsStructMap() {}
42
43// Cmd is an entry in the command history.
44type Cmd struct {
45	Text string
46	Seq  int
47}
48
49func (Cmd) IsStructMap() {}
50