13 errInvalidKey = errors.New("invalid key")
14 errNoSuchKey = errors.New("no such key")
17 type Database struct {
18 data map[string][]byte
23 func NewDatabse(basedir string) (db *Database, err error) {
24 err = os.Mkdir(basedir, 0755)
25 if err != nil && !os.IsExist(err) {
30 data: make(map[string][]byte),
35 func (db *Database) Set(key string, val []byte) (err error) {
50 err = ioutil.WriteFile(filepath.Join(db.basedir, key), val, 0644)
55 func (db *Database) Get(key string) (val []byte, err error) {
57 return nil, errInvalidKey
63 data, ok := db.data[key]
65 data, err = ioutil.ReadFile(filepath.Join(db.basedir, key))
74 val = make([]byte, len(data))
80 func (db *Database) Remove(key string) {
81 if len(key) < 1 || strings.ContainsRune(key, os.PathSeparator) {
89 os.Remove(filepath.Join(db.basedir, key))