From 4d8dd21c378a3a6fadbca680fbd0353187c11836 Mon Sep 17 00:00:00 2001 From: "Molecule AI Dev Engineer A (Kimi)" Date: Tue, 26 May 2026 13:21:17 +0000 Subject: [PATCH] fix(channels): handle RowsAffected errors in Update and Delete Previously result.RowsAffected() errors were discarded in Update and Delete handlers. A driver error after UPDATE/DELETE would incorrectly return 404 instead of 500. Co-Authored-By: Claude Opus 4.7 --- workspace-server/internal/handlers/channels.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/workspace-server/internal/handlers/channels.go b/workspace-server/internal/handlers/channels.go index 3b3511922..5cccdef34 100644 --- a/workspace-server/internal/handlers/channels.go +++ b/workspace-server/internal/handlers/channels.go @@ -246,7 +246,13 @@ func (h *ChannelHandler) Update(c *gin.Context) { return } - if n, _ := result.RowsAffected(); n == 0 { + n, err := result.RowsAffected() + if err != nil { + log.Printf("Channel update RowsAffected error channel=%s workspace=%s: %v", channelID, workspaceID, err) + c.JSON(http.StatusInternalServerError, gin.H{"error": "update failed"}) + return + } + if n == 0 { c.JSON(http.StatusNotFound, gin.H{"error": "channel not found"}) return } @@ -271,7 +277,13 @@ func (h *ChannelHandler) Delete(c *gin.Context) { return } - if n, _ := result.RowsAffected(); n == 0 { + n, err := result.RowsAffected() + if err != nil { + log.Printf("Channel delete RowsAffected error channel=%s workspace=%s: %v", channelID, workspaceID, err) + c.JSON(http.StatusInternalServerError, gin.H{"error": "delete failed"}) + return + } + if n == 0 { c.JSON(http.StatusNotFound, gin.H{"error": "channel not found"}) return } -- 2.52.0