package main import ( "encoding/json" "errors" "github.com/xujiajun/nutsdb" ) func ReadUser(username string) (*UserData, error) { data, err := DbRead(bucketUsers, username) if err != nil { return nil, err } var user UserData err = json.Unmarshal(data, &user) return &user, err } func SaveUser(user *UserData) error { data, err := json.Marshal(user) if err != nil { return err } if user.Username == "" { return errors.New("user empty") } err = DbSave(bucketUsers, user.Username, data) return err } func DbClean() error { err := db.Update( func(tx *nutsdb.Tx) error { return db.Merge() }) return err } func DbSave(bucket, key string, val []byte) error { err := db.Update( func(tx *nutsdb.Tx) error { keyBytes := []byte(key) return tx.Put(bucket, keyBytes, val, nutsdb.Persistent) }) return err } func DbRead(bucket, key string) ([]byte, error) { var val []byte err := db.View( func(tx *nutsdb.Tx) error { keyBytes := []byte(key) e, err := tx.Get(bucket, keyBytes) if err != nil { return err } val = make([]byte, len(e.Value)) copy(val, e.Value) return err }) return val, err } func DbDelete(bucket, key string, val []byte) error { err := db.Update( func(tx *nutsdb.Tx) error { keyBytes := []byte(key) return tx.Delete(bucket, keyBytes) }) return err }