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 }