github.com/ladydascalie/elvish@v0.0.0-20170703214355-2964dd3ece7f/store/shared_var.go (about)

     1  package store
     2  
     3  import (
     4  	"database/sql"
     5  	"errors"
     6  )
     7  
     8  // ErrNoVar is returned by (*Store).GetSharedVar when there is no such variable.
     9  var ErrNoVar = errors.New("no such variable")
    10  
    11  func init() {
    12  	initDB["initialize shared variable table"] = func(db *sql.DB) error {
    13  		_, err := db.Exec(`CREATE TABLE IF NOT EXISTS shared_var (name text UNIQUE PRIMARY KEY, value text)`)
    14  		return err
    15  	}
    16  }
    17  
    18  // GetSharedVar gets the value of a shared variable.
    19  func (s *Store) GetSharedVar(n string) (string, error) {
    20  	row := s.db.QueryRow(`SELECT value FROM shared_var WHERE name = ?`, n)
    21  	var value string
    22  	err := row.Scan(&value)
    23  	if err == sql.ErrNoRows {
    24  		err = ErrNoVar
    25  	}
    26  	return value, err
    27  }
    28  
    29  // SetSharedVar sets the value of a shared variable.
    30  func (s *Store) SetSharedVar(n, v string) error {
    31  	_, err := s.db.Exec(`INSERT OR REPLACE INTO shared_var (name, value) VALUES (?, ?)`, n, v)
    32  	return err
    33  }
    34  
    35  // DelSharedVar deletes a shared variable.
    36  func (s *Store) DelSharedVar(n string) error {
    37  	_, err := s.db.Exec(`DELETE FROM shared_var WHERE name = ?`, n)
    38  	return err
    39  }