Browse Source

Revert "fix(alerting): pause dto can only pause one"

This reverts commit b2c5a6a037c975390b8f0986d09b5013c5ce2b1b.
bergquist 9 years ago
parent
commit
6c2c3c7e24
3 changed files with 27 additions and 11 deletions
  1. 5 4
      pkg/api/alerting.go
  2. 4 3
      pkg/models/alert.go
  3. 18 4
      pkg/services/sqlstore/alert.go

+ 5 - 4
pkg/api/alerting.go

@@ -259,10 +259,11 @@ func NotificationTest(c *middleware.Context, dto dtos.NotificationTestCommand) R
 
 
 //POST /api/alerts/:alertId/pause
 //POST /api/alerts/:alertId/pause
 func PauseAlert(c *middleware.Context, dto dtos.PauseAlertCommand) Response {
 func PauseAlert(c *middleware.Context, dto dtos.PauseAlertCommand) Response {
+	alertId := c.ParamsInt64("alertId")
 	cmd := models.PauseAlertCommand{
 	cmd := models.PauseAlertCommand{
-		OrgId:   c.OrgId,
-		AlertId: c.ParamsInt64("alertId"),
-		Paused:  dto.Paused,
+		OrgId:    c.OrgId,
+		AlertIds: []int64{alertId},
+		Paused:   dto.Paused,
 	}
 	}
 
 
 	if err := bus.Dispatch(&cmd); err != nil {
 	if err := bus.Dispatch(&cmd); err != nil {
@@ -277,7 +278,7 @@ func PauseAlert(c *middleware.Context, dto dtos.PauseAlertCommand) Response {
 	}
 	}
 
 
 	result := map[string]interface{}{
 	result := map[string]interface{}{
-		"alertId": c.ParamsInt64("alertId"),
+		"alertId": alertId,
 		"state":   response,
 		"state":   response,
 		"message": "alert " + pausedState,
 		"message": "alert " + pausedState,
 	}
 	}

+ 4 - 3
pkg/models/alert.go

@@ -138,9 +138,10 @@ type SaveAlertsCommand struct {
 }
 }
 
 
 type PauseAlertCommand struct {
 type PauseAlertCommand struct {
-	OrgId   int64
-	AlertId int64
-	Paused  bool
+	OrgId       int64
+	AlertIds    []int64
+	ResultCount int64
+	Paused      bool
 }
 }
 
 
 type PauseAllAlertCommand struct {
 type PauseAllAlertCommand struct {

+ 18 - 4
pkg/services/sqlstore/alert.go

@@ -3,6 +3,7 @@ package sqlstore
 import (
 import (
 	"bytes"
 	"bytes"
 	"fmt"
 	"fmt"
+	"strings"
 	"time"
 	"time"
 
 
 	"github.com/go-xorm/xorm"
 	"github.com/go-xorm/xorm"
@@ -251,18 +252,31 @@ func SetAlertState(cmd *m.SetAlertStateCommand) error {
 
 
 func PauseAlert(cmd *m.PauseAlertCommand) error {
 func PauseAlert(cmd *m.PauseAlertCommand) error {
 	return inTransaction(func(sess *xorm.Session) error {
 	return inTransaction(func(sess *xorm.Session) error {
+		if len(cmd.AlertIds) == 0 {
+			return fmt.Errorf("command contains no alertids")
+		}
+
+		var buffer bytes.Buffer
 		params := make([]interface{}, 0)
 		params := make([]interface{}, 0)
 
 
-		sql := `UPDATE alert SET state = ? WHERE id = ?`
+		buffer.WriteString(`UPDATE alert SET state = ?`)
 		if cmd.Paused {
 		if cmd.Paused {
 			params = append(params, string(m.AlertStatePaused))
 			params = append(params, string(m.AlertStatePaused))
 		} else {
 		} else {
 			params = append(params, string(m.AlertStatePending))
 			params = append(params, string(m.AlertStatePending))
 		}
 		}
-		params = append(params, cmd.AlertId)
 
 
-		_, err := sess.Exec(sql, params...)
-		return err
+		buffer.WriteString(` WHERE id IN (?` + strings.Repeat(",?", len(cmd.AlertIds)-1) + `)`)
+		for _, v := range cmd.AlertIds {
+			params = append(params, v)
+		}
+
+		res, err := sess.Exec(buffer.String(), params...)
+		if err != nil {
+			return err
+		}
+		cmd.ResultCount, _ = res.RowsAffected()
+		return nil
 	})
 	})
 }
 }