// Package event define real time data evnet operation functions package event import ( "maps" "strings" ) // EventOption define option function type for event record creation type EventOption func(*EventRecord) // WithCondition define option function to set event condition description func WithCondition(cond map[string]any) EventOption { return func(e *EventRecord) { if cond != nil { e.Condition = cond } } } // WithSubscriptions define option function to set event attached subscription information func WithSubscriptions(subs []any) EventOption { return func(e *EventRecord) { if subs != nil { e.AttachedSubscriptions = subs } } } // WithOperations define option function to set event operation records func WithOperations(ops []OperationRecord) EventOption { return func(e *EventRecord) { if ops != nil { e.Operations = ops } } } // WithCategory define option function to set event category func WithCategory(cat string) EventOption { return func(e *EventRecord) { e.Category = cat } } // WithResult define option function to set event analysis result func WithResult(result map[string]any) EventOption { return func(e *EventRecord) { e.Result = result } } func WithTEAnalysisResult(breachType string) EventOption { return func(e *EventRecord) { if e.Result == nil { e.Result = make(map[string]any) } description := "数据异常" switch strings.ToLower(breachType) { case "upup": description = "超越上上限" case "up": description = "超越上限" case "down": description = "超越下限" case "downdown": description = "超越下下限" } e.Result["analysis_desc"] = description e.Result["breach_type"] = breachType } } // WithConditionValue define option function to set event condition with real time value and extra data func WithConditionValue(realTimeValue []float64, extraData map[string]any) EventOption { return func(e *EventRecord) { if e.Condition == nil { e.Condition = make(map[string]any) } e.Condition["real_time_value"] = realTimeValue maps.Copy(e.Condition, extraData) } }