2023-06-11 20:32:36 -07:00
|
|
|
package event
|
2023-06-12 20:03:17 -07:00
|
|
|
|
2023-06-17 13:35:55 -07:00
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
2023-06-12 20:03:17 -07:00
|
|
|
|
|
|
|
|
type Event struct {
|
|
|
|
|
start time.Time
|
|
|
|
|
|
|
|
|
|
Time string `json:"time"`
|
|
|
|
|
SampleRate int64 `json:"samplerate"`
|
|
|
|
|
Data map[string]any `json:"data"`
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-12 20:18:19 -07:00
|
|
|
func NewEvent(eventType string, vals ...any) *Event {
|
2023-06-12 20:03:17 -07:00
|
|
|
now := time.Now()
|
|
|
|
|
|
|
|
|
|
ev := &Event{
|
|
|
|
|
start: now,
|
|
|
|
|
Time: now.Format(time.RFC3339Nano),
|
|
|
|
|
Data: map[string]any{
|
|
|
|
|
"type": eventType,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ev.Set(vals...)
|
|
|
|
|
|
|
|
|
|
return ev
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (ev *Event) Set(vals ...any) {
|
|
|
|
|
if len(vals)%2 != 0 {
|
2023-06-17 13:35:55 -07:00
|
|
|
panic(fmt.Sprintf("missing value for key in: %#v", vals))
|
2023-06-12 20:03:17 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for i := 0; i < len(vals); i += 2 {
|
|
|
|
|
ev.Data[vals[i].(string)] = vals[i+1]
|
|
|
|
|
}
|
|
|
|
|
}
|