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