fix(alerting): pause dto can only pause one

This commit is contained in:
bergquist 2016-12-19 16:05:24 +01:00
parent a2257ec3d0
commit b2c5a6a037
3 changed files with 11 additions and 27 deletions

View File

@ -259,10 +259,9 @@ 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, OrgId: c.OrgId,
AlertIds: []int64{alertId}, AlertId: c.ParamsInt64("alertId"),
Paused: dto.Paused, Paused: dto.Paused,
} }
@ -278,7 +277,7 @@ func PauseAlert(c *middleware.Context, dto dtos.PauseAlertCommand) Response {
} }
result := map[string]interface{}{ result := map[string]interface{}{
"alertId": alertId, "alertId": c.ParamsInt64("alertId"),
"state": response, "state": response,
"message": "alert " + pausedState, "message": "alert " + pausedState,
} }

View File

@ -139,8 +139,7 @@ type SaveAlertsCommand struct {
type PauseAlertCommand struct { type PauseAlertCommand struct {
OrgId int64 OrgId int64
AlertIds []int64 AlertId int64
ResultCount int64
Paused bool Paused bool
} }

View File

@ -3,7 +3,6 @@ package sqlstore
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"strings"
"time" "time"
"github.com/go-xorm/xorm" "github.com/go-xorm/xorm"
@ -252,31 +251,18 @@ 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)
buffer.WriteString(`UPDATE alert SET state = ?`) sql := `UPDATE alert SET state = ? WHERE id = ?`
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)
buffer.WriteString(` WHERE id IN (?` + strings.Repeat(",?", len(cmd.AlertIds)-1) + `)`) _, err := sess.Exec(sql, params...)
for _, v := range cmd.AlertIds {
params = append(params, v)
}
res, err := sess.Exec(buffer.String(), params...)
if err != nil {
return err return err
}
cmd.ResultCount, _ = res.RowsAffected()
return nil
}) })
} }