From 3c43aeb6bf8b8327aeb8ee945dd76948d5a10222 Mon Sep 17 00:00:00 2001 From: "Molecule AI Dev Engineer A (Kimi)" Date: Tue, 26 May 2026 13:46:20 +0000 Subject: [PATCH] fix(secrets): handle RowsAffected errors in Delete and DeleteGlobal Previously, driver errors from result.RowsAffected() were only logged and not returned to the caller. This meant a failed driver call could incorrectly return 404 Not Found (because rows==0 on error) instead of 500 Internal Server Error. Co-Authored-By: Claude Opus 4.7 --- workspace-server/internal/handlers/secrets.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/workspace-server/internal/handlers/secrets.go b/workspace-server/internal/handlers/secrets.go index 4d085c3bf..f4d59746e 100644 --- a/workspace-server/internal/handlers/secrets.go +++ b/workspace-server/internal/handlers/secrets.go @@ -337,6 +337,8 @@ func (h *SecretsHandler) Delete(c *gin.Context) { rows, err := result.RowsAffected() if err != nil { log.Printf("DeleteWorkspace: RowsAffected error: %v", err) + c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to delete secret"}) + return } if rows == 0 { c.JSON(http.StatusNotFound, gin.H{"error": "secret not found"}) @@ -521,6 +523,8 @@ func (h *SecretsHandler) DeleteGlobal(c *gin.Context) { rows, err := result.RowsAffected() if err != nil { log.Printf("DeleteGlobal: RowsAffected error: %v", err) + c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to delete"}) + return } if rows == 0 { c.JSON(http.StatusNotFound, gin.H{"error": "secret not found"}) -- 2.52.0