From 342998023a0ea23073fffc962723a5296ee55bd1 Mon Sep 17 00:00:00 2001 From: Tetrergeru Date: Wed, 19 Feb 2025 11:34:17 +0100 Subject: [PATCH 1/4] Make pupulating function non mutating --- api/dto/triggers.go | 14 +++++++------- api/handler/trigger.go | 15 +++++++++------ api/handler/triggers.go | 2 +- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/api/dto/triggers.go b/api/dto/triggers.go index abc4d365a..4e91be457 100644 --- a/api/dto/triggers.go +++ b/api/dto/triggers.go @@ -510,20 +510,20 @@ func (*Trigger) Render(http.ResponseWriter, *http.Request) error { return nil } -func (trigger *Trigger) PopulatedDescription(events moira.NotificationEvents) error { +func (trigger *Trigger) PopulatedDescription(events moira.NotificationEvents) (*string, error) { + var emptyString = "" + if trigger.Desc == nil { - return nil + return &emptyString, nil } triggerDescriptionPopulater := templating.NewTriggerDescriptionPopulater(trigger.Name, events.ToTemplateEvents()) - description, err := triggerDescriptionPopulater.Populate(*trigger.Desc) + newDescription, err := triggerDescriptionPopulater.Populate(*trigger.Desc) if err != nil { - return fmt.Errorf("you have an error in your Go template: %v", err) + return &emptyString, fmt.Errorf("you have an error in your Go template: %v", err) } - *trigger.Desc = description - - return nil + return &newDescription, nil } type TriggerCheckResponse struct { diff --git a/api/handler/trigger.go b/api/handler/trigger.go index 1356ecbe1..6a059e05d 100644 --- a/api/handler/trigger.go +++ b/api/handler/trigger.go @@ -164,7 +164,7 @@ func getTrigger(writer http.ResponseWriter, request *http.Request) { return } - if err := checkingTemplateFilling(request, *trigger); err != nil { + if err := fillTemplate(request, *trigger); err != nil { middleware.GetLoggerEntry(request).Warning(). Error(err.Err). Msg("Failed to check template") @@ -175,7 +175,7 @@ func getTrigger(writer http.ResponseWriter, request *http.Request) { } } -func checkingTemplateFilling(request *http.Request, trigger dto.Trigger) *api.ErrorResponse { +func fillTemplate(request *http.Request, trigger dto.Trigger) *api.ErrorResponse { if !middleware.GetPopulated(request) { return nil } @@ -190,15 +190,18 @@ func checkingTemplateFilling(request *http.Request, trigger dto.Trigger) *api.Er allStates map[string]struct{} ) - eventsList, err := controller.GetTriggerEvents(database, trigger.ID, page, size, eventDefaultFrom, eventDefaultTo, allMetricRegexp, allStates) - if err != nil { - return err + eventsList, errResponse := controller.GetTriggerEvents(database, trigger.ID, page, size, eventDefaultFrom, eventDefaultTo, allMetricRegexp, allStates) + if errResponse != nil { + return errResponse } - if err := trigger.PopulatedDescription(eventsList.List); err != nil { + newDescription, err := trigger.PopulatedDescription(eventsList.List) + if errResponse != nil { return api.ErrorRender(err) } + trigger.Desc = newDescription + return nil } diff --git a/api/handler/triggers.go b/api/handler/triggers.go index d7dbdaa7c..0e59032a1 100644 --- a/api/handler/triggers.go +++ b/api/handler/triggers.go @@ -133,7 +133,7 @@ func createTrigger(writer http.ResponseWriter, request *http.Request) { } if trigger.Desc != nil { - err := trigger.PopulatedDescription(moira.NotificationEvents{{}}) + _, err := trigger.PopulatedDescription(moira.NotificationEvents{{}}) if err != nil { render.Render(writer, request, api.ErrorRender(err)) //nolint return From 2eb1925ed0e7783effaee513430aa79ff06fbaa7 Mon Sep 17 00:00:00 2001 From: Tetrergeru Date: Wed, 19 Feb 2025 12:00:38 +0100 Subject: [PATCH 2/4] Fix typo --- api/handler/trigger.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/handler/trigger.go b/api/handler/trigger.go index 6a059e05d..388024578 100644 --- a/api/handler/trigger.go +++ b/api/handler/trigger.go @@ -196,7 +196,7 @@ func fillTemplate(request *http.Request, trigger dto.Trigger) *api.ErrorResponse } newDescription, err := trigger.PopulatedDescription(eventsList.List) - if errResponse != nil { + if err != nil { return api.ErrorRender(err) } From 7676552164b9f2b6345c504a2c7419eafca525c7 Mon Sep 17 00:00:00 2001 From: Tetrergeru Date: Wed, 19 Feb 2025 12:54:25 +0100 Subject: [PATCH 3/4] Fix pointer bug --- api/handler/trigger.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/handler/trigger.go b/api/handler/trigger.go index 388024578..006d35b4c 100644 --- a/api/handler/trigger.go +++ b/api/handler/trigger.go @@ -164,7 +164,7 @@ func getTrigger(writer http.ResponseWriter, request *http.Request) { return } - if err := fillTemplate(request, *trigger); err != nil { + if err := fillTemplate(request, trigger); err != nil { middleware.GetLoggerEntry(request).Warning(). Error(err.Err). Msg("Failed to check template") @@ -175,7 +175,7 @@ func getTrigger(writer http.ResponseWriter, request *http.Request) { } } -func fillTemplate(request *http.Request, trigger dto.Trigger) *api.ErrorResponse { +func fillTemplate(request *http.Request, trigger *dto.Trigger) *api.ErrorResponse { if !middleware.GetPopulated(request) { return nil } From 43b51173e256b6b94c1d6cae9479b88724dff1f9 Mon Sep 17 00:00:00 2001 From: Tetrergeru Date: Wed, 19 Feb 2025 13:01:38 +0100 Subject: [PATCH 4/4] Add godoc --- api/dto/triggers.go | 1 + 1 file changed, 1 insertion(+) diff --git a/api/dto/triggers.go b/api/dto/triggers.go index 4e91be457..e3b427bd5 100644 --- a/api/dto/triggers.go +++ b/api/dto/triggers.go @@ -510,6 +510,7 @@ func (*Trigger) Render(http.ResponseWriter, *http.Request) error { return nil } +// PopulatedDescription returns new trigger description after template populating. func (trigger *Trigger) PopulatedDescription(events moira.NotificationEvents) (*string, error) { var emptyString = ""