// UpdateValueKeyBy ?? func (qs *QuadStore) UpdateValueKeyBy(name string, amount int64, tx *lmdb.Txn) error { value := proto.NodeData{ Name: name, Size_: amount, } key := qs.createValueKeyFor(name) data, err := tx.Get(qs.nodeDBI, key) if err == nil { // Node exists in the database -- unmarshal and update. var oldvalue proto.NodeData err := oldvalue.Unmarshal(data) if err != nil { glog.Errorf("Error: couldn't reconstruct value: %v", err) return err } oldvalue.Size_ += amount value = oldvalue } // Are we deleting something? if value.Size_ <= 0 { value.Size_ = 0 } // Repackage and rewrite. bytes, err := value.Marshal() if err != nil { glog.Errorf("Couldn't write to buffer for value %s: %s", name, err) return err } err = tx.Put(qs.nodeDBI, key, bytes, 0) return err }