// 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 }