// Package event define real time data evnet operation functions package event import ( "fmt" "time" "modelRT/constants" "github.com/gofrs/uuid" ) // NewPlatformEventRecord define func to create a new platform event record with common fields initialized func NewPlatformEventRecord(eventType int, priority int, eventName string, opts ...EventOption) (*EventRecord, error) { u, err := uuid.NewV4() if err != nil { return nil, fmt.Errorf("failed to generate UUID: %w", err) } record := &EventRecord{ EventName: eventName, EventUUID: u.String(), Type: eventType, Priority: priority, Status: 1, From: constants.EventFromPlatform, Timestamp: time.Now().UnixNano() / int64(time.Millisecond), Condition: make(map[string]any), AttachedSubscriptions: make([]any, 0), Operations: make([]OperationRecord, 0), } for _, opt := range opts { opt(record) } return record, nil } // NewGeneralPlatformSoftRecord define func to create a new general platform software event record func NewGeneralPlatformSoftRecord(name string, opts ...EventOption) (*EventRecord, error) { return NewPlatformEventRecord(int(constants.EventGeneralPlatformSoft), 0, name, opts...) } // NewGeneralApplicationSoftRecord define func to create a new general application software event record func NewGeneralApplicationSoftRecord(name string, opts ...EventOption) (*EventRecord, error) { return NewPlatformEventRecord(int(constants.EventGeneralApplicationSoft), 0, name, opts...) } // NewWarnPlatformSoftRecord define func to create a new warning platform software event record func NewWarnPlatformSoftRecord(name string, opts ...EventOption) (*EventRecord, error) { return NewPlatformEventRecord(int(constants.EventWarnPlatformSoft), 3, name, opts...) } // NewWarnApplicationSoftRecord define func to create a new warning application software event record func NewWarnApplicationSoftRecord(name string, opts ...EventOption) (*EventRecord, error) { return NewPlatformEventRecord(int(constants.EventWarnApplicationSoft), 3, name, opts...) } // NewCriticalPlatformSoftRecord define func to create a new critical platform software event record func NewCriticalPlatformSoftRecord(name string, opts ...EventOption) (*EventRecord, error) { return NewPlatformEventRecord(int(constants.EventCriticalPlatformSoft), 6, name, opts...) } // NewCriticalApplicationSoftRecord define func to create a new critical application software event record func NewCriticalApplicationSoftRecord(name string, opts ...EventOption) (*EventRecord, error) { return NewPlatformEventRecord(int(constants.EventCriticalApplicationSoft), 6, name, opts...) }