store

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: May 28, 2017 License: BSD-2-Clause Imports: 8 Imported by: 0

Documentation

Overview

Package store abstracts the persistent storage used by elvish.

Index

Constants

View Source
const SchemaVersion = 1

SchemaVersion is the current schema version. It should be bumped every time a backwards-incompatible change has been made to the schema.

Variables

View Source
var ErrEmptyHOME = errors.New("environment variable HOME is empty")

ErrEmptyHOME is the error returned by EnsureDataDir when the environmental variable HOME is empty.

View Source
var ErrNoMatchingCmd = errors.New("no matching command line")

ErrNoMatchingCmd is the error returned when a LastCmd or FirstCmd query completes with no result.

View Source
var ErrNoVar = errors.New("no such variable")

ErrNoVar is returned by (*Store).GetSharedVar when there is no such variable.

View Source
var NoBlacklist = map[string]struct{}{}

NoBlacklist is an empty blacklist, to be used in GetDirs.

Functions

func DefaultDB

func DefaultDB(dbname string) (*sql.DB, error)

DefaultDB returns the default database for storage.

func EnsureDataDir

func EnsureDataDir() (string, error)

EnsureDataDir ensures Elvish's data directory exists, creating it if necessary. It returns the path to the data directory (never with a trailing slash) and possible error.

func SchemaUpToDate added in v0.5.0

func SchemaUpToDate(db *sql.DB) bool

SchemaUpToDate returns whether the database has the current or newer version of the schema.

Types

type Cmd added in v0.8.0

type Cmd struct {
	Seq  int
	Text string
}

Cmd is an entry in the command history.

type Dir

type Dir struct {
	Path  string
	Score float64
}

Dir is an entry in the directory history.

type Store

type Store struct {

	// Waits is used for registering outstanding operations on the store.
	Waits sync.WaitGroup
	// contains filtered or unexported fields
}

Store is the permanent storage backend for elvish. It is not thread-safe. In particular, the store may be closed while another goroutine is still accessing the store. To prevent bad things from happening, every time the main goroutine spawns a new goroutine to operate on the store, it should call Waits.Add(1) in the main goroutine before spawning another goroutine, and call Waits.Done() in the spawned goroutine after the operation is finished.

func NewStore

func NewStore(dbname string) (*Store, error)

NewStore creates a new Store with the default database.

func NewStoreDB

func NewStoreDB(db *sql.DB) (*Store, error)

NewStoreDB creates a new Store with a custom database. The database must be a SQLite database.

func (*Store) AddCmd

func (s *Store) AddCmd(cmd string) error

AddCmd adds a new command to the command history.

func (*Store) AddDir

func (s *Store) AddDir(d string, incFactor float64) error

AddDir adds a directory to the directory history.

func (*Store) Close

func (s *Store) Close() error

Close waits for all outstanding operations to finish, and closes the database.

func (*Store) DelSharedVar

func (s *Store) DelSharedVar(n string) error

DelSharedVar deletes a shared variable.

func (*Store) GetCmd added in v0.8.0

func (s *Store) GetCmd(seq int) (string, error)

GetCmd queries the command history item with the specified sequence number.

func (*Store) GetCmds added in v0.8.0

func (s *Store) GetCmds(from, upto int) ([]string, error)

GetCmds returns the contents of all commands within the specified range.

func (*Store) GetDirs added in v0.8.0

func (s *Store) GetDirs(blacklist map[string]struct{}) ([]Dir, error)

GetDirs lists all directories in the directory history whose names are not in the blacklist. The results are ordered by scores in descending order.

func (*Store) GetFirstCmd added in v0.8.0

func (s *Store) GetFirstCmd(from int, prefix string) (Cmd, error)

GetFirstCmd finds the first command after the given sequence number (inclusive) with the given prefix.

func (*Store) GetLastCmd added in v0.8.0

func (s *Store) GetLastCmd(upto int, prefix string) (Cmd, error)

GetLastCmd finds the last command before the given sequence number (exclusive) with the given prefix.

func (*Store) GetSharedVar

func (s *Store) GetSharedVar(n string) (string, error)

GetSharedVar gets the value of a shared variable.

func (*Store) IterateCmds added in v0.5.0

func (s *Store) IterateCmds(from, upto int, f func(string) bool) error

IterateCmds iterates all the commands in the specified range, and calls the callback with the content of each command sequentially.

func (*Store) NextCmdSeq

func (s *Store) NextCmdSeq() (int, error)

NextCmdSeq returns the next sequence number of the command history.

func (*Store) SetSharedVar

func (s *Store) SetSharedVar(n, v string) error

SetSharedVar sets the value of a shared variable.

Jump to

Keyboard shortcuts

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