diff --git a/internal/filters/filter.go b/internal/filters/filter.go index eff04735d..d9f684239 100644 --- a/internal/filters/filter.go +++ b/internal/filters/filter.go @@ -15,6 +15,9 @@ type FilterT interface { GetRawText() string GetHits() int GetIsValid() bool + GetName() string + GetMatcher() string + GetValue() string } type alertFilter struct { @@ -49,6 +52,21 @@ func (filter *alertFilter) GetIsValid() bool { return filter.IsValid } +func (filter *alertFilter) GetName() string { + return filter.Matched +} + +func (filter *alertFilter) GetMatcher() string { + if filter.Matcher == nil { + return "" + } + return filter.Matcher.GetOperator() +} + +func (filter *alertFilter) GetValue() string { + return fmt.Sprintf("%s", filter.Value) +} + type newFilterFactory func() FilterT // NewFilter creates new filter object from filter expression like "key=value" diff --git a/internal/models/api.go b/internal/models/api.go index c8057f6f9..b998d790c 100644 --- a/internal/models/api.go +++ b/internal/models/api.go @@ -3,6 +3,9 @@ package models // Filter holds returned data on any filter passed by the user as part of the query type Filter struct { Text string `json:"text"` + Name string `json:"name"` + Matcher string `json:"matcher"` + Value string `json:"value"` Hits int `json:"hits"` IsValid bool `json:"isValid"` } diff --git a/views.go b/views.go index 76ed06e01..c7a8fa286 100644 --- a/views.go +++ b/views.go @@ -149,6 +149,9 @@ func alerts(c *gin.Context) { for _, filter := range matchFilters { af := models.Filter{ Text: filter.GetRawText(), + Name: filter.GetName(), + Matcher: filter.GetMatcher(), + Value: filter.GetValue(), Hits: filter.GetHits(), IsValid: filter.GetIsValid(), }