github.com/hoop33/elvish@v0.0.0-20160801152013-6d25485beab4/store/shared_var.go (about)

     1  package store
     2  
     3  import (
     4  	"database/sql"
     5  	"errors"
     6  )
     7  
     8  var ErrNoVar = errors.New("no such variable")
     9  
    10  func init() {
    11  	initDB["initialize shared variable table"] = func(db *sql.DB) error {
    12  		_, err := db.Exec(`create table if not exists shared_var (name text unique primary key, value text)`)
    13  		return err
    14  	}
    15  }
    16  
    17  func (s *Store) GetSharedVar(n string) (string, error) {
    18  	row := s.db.QueryRow(`select value from shared_var where name = ?`, n)
    19  	var value string
    20  	err := row.Scan(&value)
    21  	if err == sql.ErrNoRows {
    22  		err = ErrNoVar
    23  	}
    24  	return value, err
    25  }
    26  
    27  func (s *Store) SetSharedVar(n, v string) error {
    28  	_, err := s.db.Exec(`insert or replace into shared_var (name, value) values (?, ?)`, n, v)
    29  	return err
    30  }
    31  
    32  func (s *Store) DelSharedVar(n string) error {
    33  	_, err := s.db.Exec(`delete from shared_var where name = ?`, n)
    34  	return err
    35  }