86 lines
2.1 KiB
Go
86 lines
2.1 KiB
Go
// 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)
|
|
}
|
|
}
|