From 8abda76ae0c971ab5cee3e94932b8d50ab3b005d Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Sat, 26 Sep 2020 22:31:43 -0300 Subject: [PATCH 01/13] [FEAT] Add "SilentIncident" on Submission struc --- internal/bot/dialog_submission.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/bot/dialog_submission.go b/internal/bot/dialog_submission.go index 336b146f..f63f0b77 100644 --- a/internal/bot/dialog_submission.go +++ b/internal/bot/dialog_submission.go @@ -49,4 +49,5 @@ type Submission struct { PostMortemMeeting string `json:"post_mortem_meeting"` PauseNotifyTime string `json:"pause_notify_time"` PauseNotifyReason string `json:"pause_notify_reason"` + SilentIncident string `json:"silent_incident"` } From 14d7afe8d8f3c6030632a2f2fac28239d22f6573 Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Sat, 26 Sep 2020 22:32:16 -0300 Subject: [PATCH 02/13] [FEAT] Creat option to create a silent incident --- internal/commands/open.go | 46 +++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/internal/commands/open.go b/internal/commands/open.go index e308b6ce..50899e41 100644 --- a/internal/commands/open.go +++ b/internal/commands/open.go @@ -123,6 +123,29 @@ func OpenStartIncidentDialog(client bot.Client, triggerID string) error { MaxLength: 500, } + silentIncident := &slack.DialogInputSelect{ + DialogInput: slack.DialogInput{ + Label: "This is a silent incident?", + Name: "silent_incident", + Type: "select", + Placeholder: "Silent Incident", + Optional: false, + }, + Value: "false", + Options: []slack.DialogSelectOption{ + { + Label: "Yes", + Value: "true", + }, + { + Label: "No", + Value: "false", + }, + }, + OptionGroups: []slack.DialogOptionGroup{}, + Hint: "A silent incident is characterized by having a private channel and not notifying the main channel of incident when it opens.", + } + dialog := slack.Dialog{ CallbackID: "inc-open", Title: "Start an Incident", @@ -136,6 +159,7 @@ func OpenStartIncidentDialog(client bot.Client, triggerID string) error { product, commander, description, + silentIncident, }, } @@ -168,6 +192,7 @@ func StartIncidentByDialog( product = submission.Product commander = submission.IncidentCommander description = submission.IncidentDescription + silentIncident = submission.SilentIncident environment = config.Env.Environment matrixURL = config.Env.MatrixHost supportTeam = config.Env.SupportTeam @@ -180,7 +205,17 @@ func StartIncidentByDialog( return fmt.Errorf("commands.StartIncidentByDialog.get_slack_user_info: incident=%v commanderId=%v error=%v", channelName, commander, err) } - channel, err := client.CreateConversationContext(ctx, channelName, false) + hasSilentIncident, err := strconv.ParseBool(silentIncident) + if err != nil { + logger.Error( + ctx, + log.Trace(), + log.Reason("strconv.ParseBool"), + log.NewValue("error", err), + ) + } + + channel, err := client.CreateConversationContext(ctx, channelName, hasSilentIncident) if err != nil { return fmt.Errorf("commands.StartIncidentByDialog.create_conversation_context: incident=%v error=%v", channelName, err) } @@ -226,9 +261,12 @@ func StartIncidentByDialog( concurrence.WithWaitGroup(&waitgroup, func() { postAndPinMessage(client, channel.ID, message, attachment) }) - concurrence.WithWaitGroup(&waitgroup, func() { - postAndPinMessage(client, productChannelID, message, attachment) - }) + + if !hasSilentIncident { + concurrence.WithWaitGroup(&waitgroup, func() { + postAndPinMessage(client, productChannelID, message, attachment) + }) + } //We need run that without wait because the modal need close in only 3s go createPostMortemAndUpdateTopic(ctx, logger, client, fileStorage, incident, incidentID, repository, channel, warRoomURL) From c0fc29df24668f8ec5fe6f3aaa1ba46650beaa7e Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Mon, 28 Sep 2020 00:16:13 -0300 Subject: [PATCH 03/13] [FIX] run JoinConversationContext just in normal incidents --- internal/commands/open.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/internal/commands/open.go b/internal/commands/open.go index 50899e41..7643c8f4 100644 --- a/internal/commands/open.go +++ b/internal/commands/open.go @@ -266,6 +266,19 @@ func StartIncidentByDialog( concurrence.WithWaitGroup(&waitgroup, func() { postAndPinMessage(client, productChannelID, message, attachment) }) + + _, warning, metaWarning, err := client.JoinConversationContext(ctx, channel.ID) + if err != nil { + logger.Error( + ctx, + log.Trace(), + log.Reason("JoinConversationContext"), + log.NewValue("warning", warning), + log.NewValue("meta_warning", metaWarning), + log.NewValue("error", err), + ) + return err + } } //We need run that without wait because the modal need close in only 3s @@ -273,19 +286,6 @@ func StartIncidentByDialog( // startReminderStatusJob(ctx, logger, client, repository, incident) - _, warning, metaWarning, err := client.JoinConversationContext(ctx, channel.ID) - if err != nil { - logger.Error( - ctx, - log.Trace(), - log.Reason("JoinConversationContext"), - log.NewValue("warning", warning), - log.NewValue("meta_warning", metaWarning), - log.NewValue("error", err), - ) - return err - } - _, err = client.InviteUsersToConversationContext(ctx, channel.ID, commander) if err != nil { logger.Error( From 20fe4bae6b46813488060473136cf29773f9e415 Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Mon, 28 Sep 2020 00:27:33 -0300 Subject: [PATCH 04/13] [TEST] Add SilentIncident on test scenes --- internal/commands/open_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/commands/open_test.go b/internal/commands/open_test.go index 61de7959..bf615904 100644 --- a/internal/commands/open_test.go +++ b/internal/commands/open_test.go @@ -85,6 +85,7 @@ func TestStartIncidentByDialog(t *testing.T) { Product: "A", IncidentCommander: "UYGFQB9C0", IncidentDescription: "Incident Resolved!", + SilentIncident: "false", }, }, }, @@ -101,6 +102,7 @@ func TestStartIncidentByDialog(t *testing.T) { Product: "", IncidentCommander: "", IncidentDescription: "", + SilentIncident: "false", }, }, }, @@ -118,6 +120,7 @@ func TestStartIncidentByDialog(t *testing.T) { Product: "", IncidentCommander: "", IncidentDescription: "", + SilentIncident: "false", }, }, }, From 5e9948954a332cdf61aa7dcdd6b6e7dfafa4d122 Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Mon, 28 Sep 2020 23:29:32 -0300 Subject: [PATCH 05/13] [FEAT] Add "type" when incident open --- internal/commands/open.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/commands/open.go b/internal/commands/open.go index 7643c8f4..fcf66577 100644 --- a/internal/commands/open.go +++ b/internal/commands/open.go @@ -237,6 +237,11 @@ func StartIncidentByDialog( IncidentAuthor: incidentAuthor, CommanderId: user.SlackID, CommanderEmail: user.Email, + Type: model.TypePublic, + } + + if hasSilentIncident { + incident.Type = model.TypePrivate } incidentID, err := repository.InsertIncident(ctx, &incident) @@ -262,7 +267,7 @@ func StartIncidentByDialog( postAndPinMessage(client, channel.ID, message, attachment) }) - if !hasSilentIncident { + if incident.Type == model.TypePublic { concurrence.WithWaitGroup(&waitgroup, func() { postAndPinMessage(client, productChannelID, message, attachment) }) From 401f518278bd8c5730d1d632f4c779b5b183f699 Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Mon, 28 Sep 2020 23:29:58 -0300 Subject: [PATCH 06/13] [FEAT] Add "type" column --- internal/model/incident.go | 3 +++ internal/model/sql/postgres/schema/hellper.sql | 1 + 2 files changed, 4 insertions(+) diff --git a/internal/model/incident.go b/internal/model/incident.go index d81e8b4c..5fe30680 100644 --- a/internal/model/incident.go +++ b/internal/model/incident.go @@ -10,6 +10,8 @@ const ( StatusCancel = "canceled" StatusResolved = "resolved" StatusClosed = "closed" + TypePrivate = "private" + TypePublic = "public" ) type Incident struct { @@ -38,4 +40,5 @@ type Incident struct { IncidentAuthor string `db:"incident_author_id,omitempty"` CommanderId string `db:"commander_id,omitempty"` CommanderEmail string `db:"commander_email,omitempty"` + Type string `db:"type,omitempty"` } diff --git a/internal/model/sql/postgres/schema/hellper.sql b/internal/model/sql/postgres/schema/hellper.sql index 7086f574..cd65bacf 100644 --- a/internal/model/sql/postgres/schema/hellper.sql +++ b/internal/model/sql/postgres/schema/hellper.sql @@ -26,6 +26,7 @@ CREATE TABLE public.incident ( channel_id varchar(50) NULL, commander_id text NULL, commander_email text NULL, + type varchar(50) NULL, CONSTRAINT firstkey PRIMARY KEY (id) ); From 6ec9ee43adbfa32dfda226392538459b88b1fc4b Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Mon, 28 Sep 2020 23:32:25 -0300 Subject: [PATCH 07/13] [FEAT] Use column "type" --- internal/model/sql/postgres/repository.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/internal/model/sql/postgres/repository.go b/internal/model/sql/postgres/repository.go index c12bc408..d8d13992 100644 --- a/internal/model/sql/postgres/repository.go +++ b/internal/model/sql/postgres/repository.go @@ -48,6 +48,7 @@ func incidentLogValues(inc *model.Incident) []log.Value { log.NewValue("channelID", inc.ChannelId), log.NewValue("commanderID", inc.CommanderId), log.NewValue("commanderEmail", inc.CommanderEmail), + log.NewValue("type", inc.Type), } } @@ -78,8 +79,9 @@ func (r *repository) InsertIncident(ctx context.Context, inc *model.Incident) (i , channel_name , channel_id , commander_id - , commander_email) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20) + , commander_email + , type ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21) RETURNING id` id := int64(0) @@ -105,7 +107,8 @@ func (r *repository) InsertIncident(ctx context.Context, inc *model.Incident) (i inc.ChannelName, inc.ChannelId, inc.CommanderId, - inc.CommanderEmail) + inc.CommanderEmail, + inc.Type) switch err := idResult.Scan(&id); err { case nil: @@ -221,6 +224,7 @@ func (r *repository) GetIncident(ctx context.Context, channelID string) (inc mod &inc.ChannelId, &inc.CommanderId, &inc.CommanderEmail, + &inc.Type, ) r.logger.Info( @@ -241,8 +245,8 @@ func GetIncidentByChannelID() string { , start_ts , end_ts , identification_ts - , snoozed_until - , responsibility + , snoozed_until + , responsibility , functionality , root_cause , customer_impact @@ -255,6 +259,7 @@ func GetIncidentByChannelID() string { , CASE WHEN channel_id IS NULL THEN '' ELSE channel_id END AS channel_id , CASE WHEN commander_id IS NULL THEN '' ELSE commander_id END commander_id , CASE WHEN commander_email IS NULL THEN '' ELSE commander_email END commander_email + , type FROM incident WHERE channel_id = $1 LIMIT 1` @@ -547,6 +552,7 @@ func (r *repository) ListActiveIncidents(ctx context.Context) ([]model.Incident, GetIncidentStatusFilterQuery(), model.StatusOpen, model.StatusResolved, + model.TypePrivate, ) if err != nil { r.logger.Error( @@ -619,7 +625,7 @@ func GetIncidentStatusFilterQuery() string { , start_ts , end_ts , identification_ts - , snoozed_until + , snoozed_until , responsibility , functionality , root_cause @@ -635,6 +641,7 @@ func GetIncidentStatusFilterQuery() string { , CASE WHEN commander_email IS NULL THEN '' ELSE commander_email END commander_email FROM incident WHERE status IN ($1, $2) + AND type <> ($3) LIMIT 100` } From 6a9f9d80fd6147dbed654801ed082565fdd2a1dd Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Mon, 28 Sep 2020 23:44:26 -0300 Subject: [PATCH 08/13] [FEAT] Checks if incident type is private before notify the main chanel on resolve command --- internal/commands/resolve.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/commands/resolve.go b/internal/commands/resolve.go index ade7ac6d..1eb0cddd 100644 --- a/internal/commands/resolve.go +++ b/internal/commands/resolve.go @@ -166,7 +166,6 @@ func ResolveIncidentByDialog( } channelAttachment := createResolveChannelAttachment(inc, userName, calendarEvent) - privateAttachment := createResolvePrivateAttachment(incident, calendarEvent) message := "The Incident <#" + incident.ChannelId + "> has been resolved by <@" + userName + ">" var waitgroup sync.WaitGroup @@ -180,7 +179,7 @@ func ResolveIncidentByDialog( channelAttachment, ) }) - if notifyOnResolve { + if notifyOnResolve && inc.Type == model.TypePublic { concurrence.WithWaitGroup(&waitgroup, func() { postAndPinMessage( client, @@ -190,6 +189,8 @@ func ResolveIncidentByDialog( ) }) } + + privateAttachment := createResolvePrivateAttachment(incident, calendarEvent) postMessage(client, userID, "", privateAttachment) return nil From 2a142da3c52f892297a17f31d57876055f36709d Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Mon, 28 Sep 2020 23:52:26 -0300 Subject: [PATCH 09/13] [FEAT] Checks if incident type is private before notify the main chanel on close command --- internal/commands/close.go | 3 ++- internal/commands/resolve.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/commands/close.go b/internal/commands/close.go index 1f4a8e5c..cbc1f26f 100644 --- a/internal/commands/close.go +++ b/internal/commands/close.go @@ -233,7 +233,7 @@ func CloseIncidentByDialog(ctx context.Context, client bot.Client, logger log.Lo var waitgroup sync.WaitGroup defer waitgroup.Wait() - if notifyOnClose { + if notifyOnClose && inc.Type == model.TypePublic { concurrence.WithWaitGroup(&waitgroup, func() { postAndPinMessage( client, @@ -253,6 +253,7 @@ func CloseIncidentByDialog(ctx context.Context, client bot.Client, logger log.Lo message, channelAttachment, ) + err = client.ArchiveConversationContext(ctx, channelID) if err != nil { logger.Error( diff --git a/internal/commands/resolve.go b/internal/commands/resolve.go index 1eb0cddd..3c158d1b 100644 --- a/internal/commands/resolve.go +++ b/internal/commands/resolve.go @@ -166,6 +166,7 @@ func ResolveIncidentByDialog( } channelAttachment := createResolveChannelAttachment(inc, userName, calendarEvent) + privateAttachment := createResolvePrivateAttachment(incident, calendarEvent) message := "The Incident <#" + incident.ChannelId + "> has been resolved by <@" + userName + ">" var waitgroup sync.WaitGroup @@ -190,7 +191,6 @@ func ResolveIncidentByDialog( }) } - privateAttachment := createResolvePrivateAttachment(incident, calendarEvent) postMessage(client, userID, "", privateAttachment) return nil From ce7fca529aa69adbc7006743d9feac3368ba9d8a Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Mon, 28 Sep 2020 23:59:15 -0300 Subject: [PATCH 10/13] [FEAT] Checks if incident type is private before notify the main chanel on cancel command --- internal/commands/cancel.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/commands/cancel.go b/internal/commands/cancel.go index 2230a280..0cd81610 100644 --- a/internal/commands/cancel.go +++ b/internal/commands/cancel.go @@ -175,7 +175,7 @@ func CancelIncidentByDialog( return err } - if notifyOnCancel { + if notifyOnCancel && inc.Type == model.TypePublic { err := postAndPinMessage( client, productChannelID, From 8ea2771302cb82c753e6f7144e110358b13ac9d4 Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Fri, 2 Oct 2020 12:45:33 -0300 Subject: [PATCH 11/13] [DOCS] Add new permission --- docs/CONFIGURING-SLACK.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/CONFIGURING-SLACK.md b/docs/CONFIGURING-SLACK.md index 2634e72f..e4da28ef 100644 --- a/docs/CONFIGURING-SLACK.md +++ b/docs/CONFIGURING-SLACK.md @@ -31,6 +31,7 @@ - usergroups:read - users:read - users:read.email + - groups:write ``` ## Slash Commands From bb089ca3d31e21051d14c10a982cbe82849eb060 Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Tue, 6 Oct 2020 08:22:04 -0300 Subject: [PATCH 12/13] [REFACT] Change "type" to "channel_type" --- internal/commands/cancel.go | 2 +- internal/commands/close.go | 2 +- internal/commands/open.go | 6 +++--- internal/commands/resolve.go | 2 +- internal/model/incident.go | 2 +- internal/model/sql/postgres/repository.go | 12 ++++++------ internal/model/sql/postgres/schema/hellper.sql | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/internal/commands/cancel.go b/internal/commands/cancel.go index 0cd81610..c7ebb79f 100644 --- a/internal/commands/cancel.go +++ b/internal/commands/cancel.go @@ -175,7 +175,7 @@ func CancelIncidentByDialog( return err } - if notifyOnCancel && inc.Type == model.TypePublic { + if notifyOnCancel && inc.ChannelType == model.TypePublic { err := postAndPinMessage( client, productChannelID, diff --git a/internal/commands/close.go b/internal/commands/close.go index cbc1f26f..f842dd5c 100644 --- a/internal/commands/close.go +++ b/internal/commands/close.go @@ -233,7 +233,7 @@ func CloseIncidentByDialog(ctx context.Context, client bot.Client, logger log.Lo var waitgroup sync.WaitGroup defer waitgroup.Wait() - if notifyOnClose && inc.Type == model.TypePublic { + if notifyOnClose && inc.ChannelType == model.TypePublic { concurrence.WithWaitGroup(&waitgroup, func() { postAndPinMessage( client, diff --git a/internal/commands/open.go b/internal/commands/open.go index fcf66577..6a8cc360 100644 --- a/internal/commands/open.go +++ b/internal/commands/open.go @@ -237,11 +237,11 @@ func StartIncidentByDialog( IncidentAuthor: incidentAuthor, CommanderId: user.SlackID, CommanderEmail: user.Email, - Type: model.TypePublic, + ChannelType: model.TypePublic, } if hasSilentIncident { - incident.Type = model.TypePrivate + incident.ChannelType = model.TypePrivate } incidentID, err := repository.InsertIncident(ctx, &incident) @@ -267,7 +267,7 @@ func StartIncidentByDialog( postAndPinMessage(client, channel.ID, message, attachment) }) - if incident.Type == model.TypePublic { + if incident.ChannelType == model.TypePublic { concurrence.WithWaitGroup(&waitgroup, func() { postAndPinMessage(client, productChannelID, message, attachment) }) diff --git a/internal/commands/resolve.go b/internal/commands/resolve.go index 3c158d1b..bb40ab5f 100644 --- a/internal/commands/resolve.go +++ b/internal/commands/resolve.go @@ -180,7 +180,7 @@ func ResolveIncidentByDialog( channelAttachment, ) }) - if notifyOnResolve && inc.Type == model.TypePublic { + if notifyOnResolve && inc.ChannelType == model.TypePublic { concurrence.WithWaitGroup(&waitgroup, func() { postAndPinMessage( client, diff --git a/internal/model/incident.go b/internal/model/incident.go index 5fe30680..b44c42c6 100644 --- a/internal/model/incident.go +++ b/internal/model/incident.go @@ -40,5 +40,5 @@ type Incident struct { IncidentAuthor string `db:"incident_author_id,omitempty"` CommanderId string `db:"commander_id,omitempty"` CommanderEmail string `db:"commander_email,omitempty"` - Type string `db:"type,omitempty"` + ChannelType string `db:"channel_type,omitempty"` } diff --git a/internal/model/sql/postgres/repository.go b/internal/model/sql/postgres/repository.go index d8d13992..4d4384b3 100644 --- a/internal/model/sql/postgres/repository.go +++ b/internal/model/sql/postgres/repository.go @@ -48,7 +48,7 @@ func incidentLogValues(inc *model.Incident) []log.Value { log.NewValue("channelID", inc.ChannelId), log.NewValue("commanderID", inc.CommanderId), log.NewValue("commanderEmail", inc.CommanderEmail), - log.NewValue("type", inc.Type), + log.NewValue("channelType", inc.ChannelType), } } @@ -80,7 +80,7 @@ func (r *repository) InsertIncident(ctx context.Context, inc *model.Incident) (i , channel_id , commander_id , commander_email - , type ) + , channel_type ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21) RETURNING id` @@ -108,7 +108,7 @@ func (r *repository) InsertIncident(ctx context.Context, inc *model.Incident) (i inc.ChannelId, inc.CommanderId, inc.CommanderEmail, - inc.Type) + inc.ChannelType) switch err := idResult.Scan(&id); err { case nil: @@ -224,7 +224,7 @@ func (r *repository) GetIncident(ctx context.Context, channelID string) (inc mod &inc.ChannelId, &inc.CommanderId, &inc.CommanderEmail, - &inc.Type, + &inc.ChannelType, ) r.logger.Info( @@ -259,7 +259,7 @@ func GetIncidentByChannelID() string { , CASE WHEN channel_id IS NULL THEN '' ELSE channel_id END AS channel_id , CASE WHEN commander_id IS NULL THEN '' ELSE commander_id END commander_id , CASE WHEN commander_email IS NULL THEN '' ELSE commander_email END commander_email - , type + , channel_type FROM incident WHERE channel_id = $1 LIMIT 1` @@ -641,7 +641,7 @@ func GetIncidentStatusFilterQuery() string { , CASE WHEN commander_email IS NULL THEN '' ELSE commander_email END commander_email FROM incident WHERE status IN ($1, $2) - AND type <> ($3) + AND channel_type <> ($3) LIMIT 100` } diff --git a/internal/model/sql/postgres/schema/hellper.sql b/internal/model/sql/postgres/schema/hellper.sql index cd65bacf..694de4e7 100644 --- a/internal/model/sql/postgres/schema/hellper.sql +++ b/internal/model/sql/postgres/schema/hellper.sql @@ -26,7 +26,7 @@ CREATE TABLE public.incident ( channel_id varchar(50) NULL, commander_id text NULL, commander_email text NULL, - type varchar(50) NULL, + channel_type varchar(50) NULL, CONSTRAINT firstkey PRIMARY KEY (id) ); From b33722a509811a427207a5404d03ab76c00024d0 Mon Sep 17 00:00:00 2001 From: Natalia Favareto Date: Sat, 24 Oct 2020 15:30:41 -0300 Subject: [PATCH 13/13] Update internal/model/sql/postgres/repository.go Co-authored-by: Guilherme Fonseca --- internal/model/sql/postgres/repository.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/model/sql/postgres/repository.go b/internal/model/sql/postgres/repository.go index 4d4384b3..0284833e 100644 --- a/internal/model/sql/postgres/repository.go +++ b/internal/model/sql/postgres/repository.go @@ -625,7 +625,7 @@ func GetIncidentStatusFilterQuery() string { , start_ts , end_ts , identification_ts - , snoozed_until + , snoozed_until , responsibility , functionality , root_cause