Beispiel #1
0
// UpdateEndnode updates EndnodeAddress for an existing end-node.
func (m *DB) UpdateEndnode(newEA common.EndnodeAddress, caddr common.CloudAddress) (common.MapItem, error) {
	var item common.MapItem
	err := m.db.Update(func(tx *bolt.Tx) (err error) {
		//find mapItem with cloud address
		item, err = m.FindByCloudAddress(caddr)
		if err != nil {
			return err
		}
		//delete mapItem from bucket
		err = m.deleteMapItem(tx, item.Key())
		if err != nil {
			return err
		}

		//insert mapItem with new endnode address
		item.EndnodeAddress = &newEA
		return m.putMapItem(tx, item)

	})
	if err != nil {
		return common.MapItem{}, err
	}
	return item, nil
}