From 4fe19c3d73d4e10f8ce26a47984b94255d969cb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Mierzwa?= Date: Sun, 1 Jul 2018 10:26:08 +0200 Subject: [PATCH] feat(api): extra fields with parsed filter data in the API response --- internal/filters/filter.go | 18 ++++++++++++++++++ internal/models/api.go | 3 +++ views.go | 3 +++ 3 files changed, 24 insertions(+) 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(), }