Commit 4ef95cfd by bergquist

style(api): reduce code complexity

parent 1f8f3ed0
......@@ -288,15 +288,17 @@ func PauseAlert(c *middleware.Context, dto dtos.PauseAlertCommand) Response {
//POST /api/alerts/pause
func PauseAlerts(c *middleware.Context, dto dtos.PauseAlertsCommand) Response {
alertIdsToUpdate, err := getAlertIdsToUpdate(dto)
if err != nil {
return ApiError(500, "Failed to pause alerts", err)
updateCmd := models.PauseAlertCommand{
OrgId: c.OrgId,
Paused: dto.Paused,
}
updateCmd := models.PauseAlertCommand{
OrgId: c.OrgId,
AlertIds: alertIdsToUpdate,
Paused: dto.Paused,
if len(dto.DataSourceIds) > 0 {
alertIdsToUpdate, err := getAlertIdsToUpdate(dto)
if err != nil {
return ApiError(500, "Failed to pause alerts", err)
}
updateCmd.AlertIds = alertIdsToUpdate
}
if err := bus.Dispatch(&updateCmd); err != nil {
......@@ -326,20 +328,14 @@ func getAlertIdsToUpdate(pauseAlertCmd dtos.PauseAlertsCommand) ([]int64, error)
}
var alertIdsToUpdate []int64
updateAllAlerts := len(pauseAlertCmd.DataSourceIds) == 0
for _, alert := range cmd.Result {
if updateAllAlerts {
alertIdsToUpdate = append(alertIdsToUpdate, alert.Id)
continue
}
alert, err := alerting.NewRuleFromDBAlert(alert)
if err != nil {
return nil, err
}
for _, condition := range alert.Conditions {
id, exist := condition.GetDatsourceId()
id, exist := condition.GetDatasourceId()
if exist && existInSlice(pauseAlertCmd.DataSourceIds, *id) {
alertIdsToUpdate = append(alertIdsToUpdate, alert.Id)
}
......
package api
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestAlertingApi(t *testing.T) {
Convey("", func() {})
}
......@@ -34,7 +34,7 @@ type AlertQuery struct {
To string
}
func (c *QueryCondition) GetDatsourceId() (datasourceId *int64, exist bool) {
func (c *QueryCondition) GetDatasourceId() (datasourceId *int64, exist bool) {
return &c.Query.DatasourceId, true
}
......
......@@ -18,6 +18,10 @@ func (c *conditionStub) Eval(context *EvalContext) (*ConditionResult, error) {
return &ConditionResult{Firing: c.firing, EvalMatches: c.matches, Operator: c.operator, NoDataFound: c.noData}, nil
}
func (c *conditionStub) GetDatasourceId() (datasourceId *int64, exist bool) {
return nil, false
}
func TestAlertingExecutor(t *testing.T) {
Convey("Test alert execution", t, func() {
handler := NewEvalHandler()
......
......@@ -30,5 +30,5 @@ type ConditionResult struct {
type Condition interface {
Eval(result *EvalContext) (*ConditionResult, error)
GetDatsourceId() (datasourceId *int64, exist bool)
GetDatasourceId() (datasourceId *int64, exist bool)
}
......@@ -14,6 +14,10 @@ func (f *FakeCondition) Eval(context *EvalContext) (*ConditionResult, error) {
return &ConditionResult{}, nil
}
func (c *FakeCondition) GetDatasourceId() (datasourceId *int64, exist bool) {
return nil, false
}
func TestAlertRuleModel(t *testing.T) {
Convey("Testing alert rule", t, func() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment