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), } }