Example #1
0
// UpsertEndnodeProperties updates or inserts a end-node with thing properties.
func (m *DB) UpsertEndnodeProperties(ea common.EndnodeAddress, data []byte) (common.MapItem, error) {
	var item common.MapItem
	err := m.db.Update(func(tx *bolt.Tx) (err error) {
		item, err = m.getMapItem(tx, []byte(ea.IDString()))
		if err != nil {
			if err != common.ErrUnknownEndnode {
				return err
			}
			item = common.MapItem{
				EndnodeAddress: &ea,
			}
		}
		item.ThingProperties = data
		return m.putMapItem(tx, item)
	})
	if err != nil {
		return common.MapItem{}, err
	}
	return item, nil
}