From 2fdcf68a22054425fa596ce1703474de8b762cd3 Mon Sep 17 00:00:00 2001 From: Abhinav Raut Date: Wed, 12 Mar 2025 03:21:13 +0530 Subject: [PATCH] chore: set closed_at and resolved_at only once in conversations, on subsequent updates they are not to be updated again and again to the current time - Remove unncessary websocket update due to this change --- internal/conversation/conversation.go | 7 ------- internal/conversation/queries.sql | 6 +++--- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/internal/conversation/conversation.go b/internal/conversation/conversation.go index d8d878a9..b2283337 100644 --- a/internal/conversation/conversation.go +++ b/internal/conversation/conversation.go @@ -574,13 +574,6 @@ func (c *Manager) UpdateConversationStatus(uuid string, statusID int, status, sn // Broadcast updates using websocket. c.BroadcastConversationUpdate(uuid, "status", status) - if status == models.StatusResolved { - c.BroadcastConversationUpdate(uuid, "resolved_at", time.Now().Format(time.RFC3339)) - } - if status == models.StatusClosed { - c.BroadcastConversationUpdate(uuid, "closed_at", time.Now().Format(time.RFC3339)) - c.BroadcastConversationUpdate(uuid, "resolved_at", time.Now().Format(time.RFC3339)) - } return nil } diff --git a/internal/conversation/queries.sql b/internal/conversation/queries.sql index 65c725f2..dd366bce 100644 --- a/internal/conversation/queries.sql +++ b/internal/conversation/queries.sql @@ -197,9 +197,9 @@ WHERE uuid = $1; -- name: update-conversation-status UPDATE conversations SET status_id = (SELECT id FROM conversation_statuses WHERE name = $2), - resolved_at = CASE WHEN $2 IN ('Resolved', 'Closed') THEN NOW() ELSE resolved_at END, - closed_at = CASE WHEN $2 = 'Closed' THEN NOW() ELSE closed_at END, - snoozed_until = CASE WHEN $2 = 'Snoozed' THEN $3::timestamptz ELSE NULL END, + resolved_at = COALESCE(resolved_at, CASE WHEN $2 IN ('Resolved', 'Closed') THEN NOW() END), + closed_at = COALESCE(closed_at, CASE WHEN $2 = 'Closed' THEN NOW() END), + snoozed_until = CASE WHEN $2 = 'Snoozed' THEN $3::timestamptz ELSE snoozed_until END, updated_at = NOW() WHERE uuid = $1;