InsertHeartbeatUsageEvent implements agplusage.Inserter.
(ctx context.Context, tx database.Store, id string, event usagetypes.HeartbeatEvent)
| 69 | |
| 70 | // InsertHeartbeatUsageEvent implements agplusage.Inserter. |
| 71 | func (i *dbInserter) InsertHeartbeatUsageEvent(ctx context.Context, tx database.Store, id string, event usagetypes.HeartbeatEvent) error { |
| 72 | if !event.EventType().IsHeartbeat() { |
| 73 | return xerrors.Errorf("event type %q is not a heartbeat event", event.EventType()) |
| 74 | } |
| 75 | if err := event.Valid(); err != nil { |
| 76 | return xerrors.Errorf("invalid %q event: %w", event.EventType(), err) |
| 77 | } |
| 78 | |
| 79 | jsonData, err := json.Marshal(event.Fields()) |
| 80 | if err != nil { |
| 81 | return xerrors.Errorf("marshal event as JSON: %w", err) |
| 82 | } |
| 83 | |
| 84 | // Duplicate events are ignored by the query, so we don't need to check the |
| 85 | // error. |
| 86 | return tx.InsertUsageEvent(ctx, database.InsertUsageEventParams{ |
| 87 | ID: id, |
| 88 | EventType: string(event.EventType()), |
| 89 | EventData: jsonData, |
| 90 | CreatedAt: dbtime.Time(i.clock.Now()), |
| 91 | }) |
| 92 | } |
nothing calls this directly
no test coverage detected