diff --git a/beszel/internal/alerts/alerts.go b/beszel/internal/alerts/alerts.go index 807b9cc..e25e830 100644 --- a/beszel/internal/alerts/alerts.go +++ b/beszel/internal/alerts/alerts.go @@ -87,7 +87,7 @@ var supportsTitle = map[string]struct{}{ func NewAlertManager(app hubLike) *AlertManager { am := &AlertManager{ hub: app, - alertQueue: make(chan alertTask), + alertQueue: make(chan alertTask, 5), stopChan: make(chan struct{}), } am.bindEvents() diff --git a/beszel/internal/alerts/alerts_history.go b/beszel/internal/alerts/alerts_history.go index 3c258f6..9654456 100644 --- a/beszel/internal/alerts/alerts_history.go +++ b/beszel/internal/alerts/alerts_history.go @@ -42,21 +42,10 @@ func updateHistoryOnAlertUpdate(e *core.RecordEvent) error { // resolveAlertHistoryRecord sets the resolved field to the current time func resolveAlertHistoryRecord(app core.App, alertRecordID string) error { - alertHistoryRecords, err := app.FindRecordsByFilter( - "alerts_history", - "alert_id={:alert_id} && resolved=null", - "-created", - 1, - 0, - dbx.Params{"alert_id": alertRecordID}, - ) - if err != nil { + alertHistoryRecord, err := app.FindFirstRecordByFilter("alerts_history", "alert_id={:alert_id} && resolved=null", dbx.Params{"alert_id": alertRecordID}) + if err != nil || alertHistoryRecord == nil { return err } - if len(alertHistoryRecords) == 0 { - return nil - } - alertHistoryRecord := alertHistoryRecords[0] // there should be only one record alertHistoryRecord.Set("resolved", time.Now().UTC()) err = app.Save(alertHistoryRecord) if err != nil { diff --git a/beszel/internal/alerts/alerts_test.go b/beszel/internal/alerts/alerts_test.go index 71a8189..742bd1b 100644 --- a/beszel/internal/alerts/alerts_test.go +++ b/beszel/internal/alerts/alerts_test.go @@ -10,6 +10,8 @@ import ( "net/http" "strings" "testing" + "testing/synctest" + "time" beszelTests "beszel/internal/tests" @@ -63,14 +65,14 @@ func TestUserAlertsApi(t *testing.T) { } scenarios := []beszelTests.ApiScenario{ - { - Name: "GET not implemented - returns index", - Method: http.MethodGet, - URL: "/api/beszel/user-alerts", - ExpectedStatus: 200, - ExpectedContent: []string{"