cml04-falcon-system/internal/event/event.go
2024-10-20 21:34:22 +02:00

69 lines
1.4 KiB
Go

package event
import (
"errors"
"time"
"github.com/google/uuid"
)
type EventDestType uint8
const (
EH_DEST_TYPE_DB EventDestType = iota + 1 // dest. type: data base
EH_DEST_TYPE_BRK // dest. type: data message broker
EH_DEST_TYPE_PIPE // dest. type: unix or nt pipe
)
const EH_WAIT_TIME time.Duration = (time.Second * 2) // sec to wait for retry
type MetaData map[string]any
func (m MetaData) Get(key string) (any, error) {
value, ok := m[key]
if !ok {
return nil, errors.New("key not found")
}
return value, nil
}
func (m MetaData) Set(key string, value any) {
m[key] = value
}
func (m MetaData) Delete(key string) {
delete(m, key)
}
func NewMetaData() MetaData {
return make(map[string]any)
}
// Event struct
type Event struct {
EventID string
EventTopic string
EventSender string
EventDestType EventDestType
EventMeta MetaData
EventData any
EventTime string
}
// NewEvent creates a new event
func NewEvent(eventSender, eventTopic string, eventMeta MetaData, eventData any) *Event {
// check if eventMeta is nil
if eventMeta == nil {
eventMeta = NewMetaData()
}
// return event
return &Event{
EventID: uuid.NewString(),
EventTopic: eventTopic,
EventSender: eventSender,
EventMeta: eventMeta,
EventData: eventData,
EventTime: time.Now().UTC().Format(time.RFC3339),
}
}