MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / loadEventData

Method loadEventData

pkg/events/redis/store.go:94–121  ·  view source on GitHub ↗

loadEventData loads event data for every event in evts (by UniqueID) and set additional fields in the events.

(ctx context.Context, cl redis.Cmdable, evts ...*ttnpb.Event)

Source from the content-addressed store, hash-verified

92// loadEventData loads event data for every event in evts (by UniqueID)
93// and set additional fields in the events.
94func (ps *PubSubStore) loadEventData(ctx context.Context, cl redis.Cmdable, evts ...*ttnpb.Event) error {
95 if len(evts) == 0 {
96 return nil
97 }
98 keys := make([]string, 0, len(evts))
99 for _, evt := range evts {
100 keys = append(keys, ps.eventDataKey(ctx, evt.UniqueId))
101 }
102 bs, err := cl.MGet(ctx, keys...).Result()
103 if err != nil {
104 return ttnredis.ConvertError(err)
105 }
106 for i, b := range bs {
107 switch b := b.(type) {
108 case nil:
109 continue // Event data deleted/expired.
110 case string:
111 if err = decodeEventData(b, evts[i]); err != nil {
112 log.FromContext(ctx).WithError(err).Warn("Failed to decode event payload")
113 continue
114 }
115 default:
116 log.FromContext(ctx).WithField("element", b).Warn("Invalid element in event payloads")
117 continue
118 }
119 }
120 return nil
121}
122
123// LoadEvent loads an event by its UID.
124func (ps *PubSubStore) LoadEvent(ctx context.Context, uid string) (*ttnpb.Event, error) {

Callers 3

tailStreamMethod · 0.95
SubscribeWithHistoryMethod · 0.95
FindRelatedMethod · 0.95

Calls 7

eventDataKeyMethod · 0.95
FromContextFunction · 0.92
decodeEventDataFunction · 0.85
ResultMethod · 0.65
WarnMethod · 0.65
WithErrorMethod · 0.65
WithFieldMethod · 0.65

Tested by

no test coverage detected